将 Javascript 转换为 C# 问题
Translating Javascript to C# Issues
如果有帮助,我一直在尝试转换此 Javascript code into a C# (Unity3d) script. It is an implementation of Naive Surface Nets explained here。
我翻译的 C# 脚本在没有 errors/warnings 的情况下编译,但结果是一个损坏的(但可识别的)网格:
我还注意到顶点看起来相当正确:
(如果您还不能分辨,输入体素只是单纯形噪声。)
我真的很想让它工作,但我对 Javascript 不是很熟悉。
精通这两种语言的人可以告诉我我错过了什么吗?谢谢。
Unity 的网格接收三角形列表。
但是,Javascript 代码似乎使用四边形列表。
你应该把一个正方形分成两个三角形。
if (Convert.ToBoolean(mask & 1))
{
faces.Add(buffer[m]);
faces.Add(buffer[m - dv]);
faces.Add(buffer[m - du]);
faces.Add(buffer[m - dv]);
faces.Add(buffer[m - du - dv]);
faces.Add(buffer[m - du]);
}
else
{
faces.Add(buffer[m]);
faces.Add(buffer[m - du]);
faces.Add(buffer[m - dv]);
faces.Add(buffer[m - du]);
faces.Add(buffer[m - du - dv]);
faces.Add(buffer[m - dv]);
}
mesh.SetTriangles(faces, 0);
你的三维数组工具有问题...
带有单个数组的原始 Javascript 代码工作正常。
已解决。我只是错误翻译了 Javascript 代码的第 87 行。
原文:
for(x[2]=0; x[2]<dims[2]-1; ++x[2], n+=dims[0], buf_no ^= 1, R[2]=-R[2]) {
我的错误翻译:
for (pos[2] = 0; pos[2] < depth - 1; pos[2]++, bufferNumber ^= 1, R[2] = -R[2] )
更正为:
for (pos[2] = 0; pos[2] < depth - 1; n += width, bufferNumber ^= 1, R[2] = -R[2] )
基本上是错别字。抱歉。
如果有帮助,我一直在尝试转换此 Javascript code into a C# (Unity3d) script. It is an implementation of Naive Surface Nets explained here。
我翻译的 C# 脚本在没有 errors/warnings 的情况下编译,但结果是一个损坏的(但可识别的)网格:
我还注意到顶点看起来相当正确:
(如果您还不能分辨,输入体素只是单纯形噪声。)
我真的很想让它工作,但我对 Javascript 不是很熟悉。 精通这两种语言的人可以告诉我我错过了什么吗?谢谢。
Unity 的网格接收三角形列表。
但是,Javascript 代码似乎使用四边形列表。
你应该把一个正方形分成两个三角形。
if (Convert.ToBoolean(mask & 1))
{
faces.Add(buffer[m]);
faces.Add(buffer[m - dv]);
faces.Add(buffer[m - du]);
faces.Add(buffer[m - dv]);
faces.Add(buffer[m - du - dv]);
faces.Add(buffer[m - du]);
}
else
{
faces.Add(buffer[m]);
faces.Add(buffer[m - du]);
faces.Add(buffer[m - dv]);
faces.Add(buffer[m - du]);
faces.Add(buffer[m - du - dv]);
faces.Add(buffer[m - dv]);
}
mesh.SetTriangles(faces, 0);
你的三维数组工具有问题...
带有单个数组的原始 Javascript 代码工作正常。
已解决。我只是错误翻译了 Javascript 代码的第 87 行。
原文:
for(x[2]=0; x[2]<dims[2]-1; ++x[2], n+=dims[0], buf_no ^= 1, R[2]=-R[2]) {
我的错误翻译:
for (pos[2] = 0; pos[2] < depth - 1; pos[2]++, bufferNumber ^= 1, R[2] = -R[2] )
更正为:
for (pos[2] = 0; pos[2] < depth - 1; n += width, bufferNumber ^= 1, R[2] = -R[2] )
基本上是错别字。抱歉。