将Javascript转换为C#问题

将Javascript转换为C#问题,javascript,c#,unity3d,voxel,Javascript,C#,Unity3d,Voxel,我一直在尝试把它转换成一个。如果有帮助的话,它是一个朴素的表面网络的实现 我翻译的C#脚本在编译时没有出现错误/警告,但结果是网格破裂(但可识别): 我还注意到顶点看起来相当正确: (如果您还不知道,输入的体素只是单纯形噪声。) 我真的很想让它工作起来,但我不太精通Javascript。 精通两种语言的人能告诉我我错过了什么吗?谢谢。 编辑:Unity的网格接收三角形列表。 然而,Javascript代码似乎使用四边形列表。 你应该把一个正方形分成两个三角形 if (Convert.ToBo

我一直在尝试把它转换成一个。如果有帮助的话,它是一个朴素的表面网络的实现

我翻译的C#脚本在编译时没有出现错误/警告,但结果是网格破裂(但可识别):

我还注意到顶点看起来相当正确:

(如果您还不知道,输入的体素只是单纯形噪声。)

我真的很想让它工作起来,但我不太精通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代码运行良好。

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]) {

(x[2]=0;x[2]已解决。我只是误译了Javascript代码的第87行

原件:

for(x[2]=0; x[2]<dims[2]-1; ++x[2], n+=dims[0], buf_no ^= 1, R[2]=-R[2]) {

(x[2]=0;x[2]的
我很乐意提供帮助,但我不确定如何通过堆栈溢出接收您的项目。@Jace我将删除它并向您发送链接。这对您有用吗?当然可以do@Jace谢谢,我会看一看我很乐意帮忙,但我不确定如何通过堆栈溢出接收您的项目。@Jace我会将其放在Dropbox中并发送一个链接给您。是否为你工作?当然会的do@Jace谢谢你,我会看一看谢谢你的帮助,但我已经解决了!我只是忘了在这里发布。这是我的一个很小的翻译错误。是的,我知道Unity更喜欢三角形,我已经实现了你的解决方案,甚至在知道你在这里发布它之前。(之前我使用的是
Mesh.setindex()
,它允许您指定四边形而不是三角形)不过,现在这些都不重要了。这种网格划分方法在处理块体素数据时存在一些基本问题。我将放弃这种方法,尝试另一种方法,如行进立方体或双轮廓。谢谢你的帮助,但我已经解决了它!我只是忘了在这里发布它。这是我方面的一个非常小的翻译错误。还有s、 我知道Unity更喜欢三角形,甚至在知道您在这里发布解决方案之前,我已经实现了您的解决方案。(之前我使用的是
Mesh.setindex()
,它允许您指定四边形而不是三角形)不过,现在这些都不重要了。这种网格划分方法在处理块体素数据时存在一些基本问题。我将放弃这种方法,尝试另一种方法,如移动立方体或双重轮廓。