2016-07-30 17 views
1

私はこのJavascript codeC# (Unity3d) scriptに変換しようとしています。それが役立つなら、Naive Surface Nets explained hereの実装です。エラー/警告なしJavascriptをC#の問題に翻訳する

私の翻訳のC#スクリプトコンパイルんが、結果は壊れた(しかし、認識可能)メッシュである:頂点が合理的に正しい見えること C# Script in Unity3D

私も気づいた: enter image description here

(もしあなたがまだ教えていないのであれば、入力ボクセルは単なるノイズです。)

私は本当にこの作業をしたいのですが、私はJavascriptに精通していません。 両方の言語をよく知っている人が、私が逃したことを教えてもらえますか?ありがとうございました。

EDIT:Here's the project.

+1

私はお手伝いしますが、私はあなたのプロジェクトをStack Overflow経由で受け取る方法がわかりません。 – Jace

+0

@Jace私はそれをDropboxし、あなたにリンクを送信します。それはあなたのために働くのですか? – bpmw

+0

確かにそうです – Jace

答えて

0

解決済み。私は単に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; n += width, bufferNumber ^= 1, R[2] = -R[2]) 

タイプミス:

for (pos[2] = 0; pos[2] < depth - 1; pos[2]++, bufferNumber ^= 1, R[2] = -R[2]) 

に修正しました。申し訳ありません。

0

ユニティのメッシュは三角形リストを受け取ります。
しかし、JavaScriptコードは四辺形リストを使用しているようです。
正方形を2つの三角形に分割する必要があります。

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); 

とあなたの3次元アレイ実装は、単一のアレイと
元Javascriptコードが正常に動作します...何か間違っています。

+0

私はすでにそれを解決しました!私はここに投稿するのを忘れてしまった。私のところでは非常に小さな翻訳エラーでした。そしてはい、私はユニティが三角を好むことを知っています、そして、あなたが既にここにそれを投稿したことを知る前に私はすでにあなたのソリューションを実装しました。 (私は 'Mesh 'を使っていました。三角形の代わりに四角形を指定できるSetIndices() ')。このメッシュ作成方法には、ボクセルデータをチャンクで使用する際にいくつかの基本的な問題があります。私はこの方法を廃止し、行進立方体や二重輪郭線のような別の方法を試みるつもりです。 – bpmw

関連する問題