我一直在試圖將Javascript code轉換爲C# (Unity3d) script。如果有幫助,這是一個天真表面網explained here的實施。將Javascript轉換爲C#問題
我轉換過來的C#腳本不正確編譯/警告,但結果是一個壞的(但可識別)目:
(如果你不能說,輸入體素只是單純的噪音。)
我真的很想得到這個工作,但我不熟悉Javascript。 懂得這兩種語言的人能告訴我我錯過了什麼嗎?謝謝。
我一直在試圖將Javascript code轉換爲C# (Unity3d) script。如果有幫助,這是一個天真表面網explained here的實施。將Javascript轉換爲C#問題
我轉換過來的C#腳本不正確編譯/警告,但結果是一個壞的(但可識別)目:
(如果你不能說,輸入體素只是單純的噪音。)
我真的很想得到這個工作,但我不熟悉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代碼似乎使用了四邊形列表。
你應該將一個正方形分成兩個三角形。
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喜歡三角形,而且在知道您已經發布之前,我已經實施了您的解決方案。 (事先我正在使用'Mesh。SetIndices()'它允許你指定四邊形而不是三角形)儘管如此,這些都不重要。這種網格化方法在與體塊數據一起使用時會遇到一些基本問題。我要廢棄這種方法,並嘗試另一種方法,如遊動立方體或雙輪廓。 – bpmw
我很樂意提供幫助,但我不確定如何通過堆棧溢出接收您的項目。 – Jace
@Jace我會Dropbox它並給你一個鏈接。那對你有用嗎? – bpmw
當然,那會做 – Jace