0

CubeGeometry の 1 つの特定の面に別のジオメトリ Three.ShapeGeometry を設定する方法は?

私はこれを試しました

    var rectLength = 120, rectWidth = 40;

            var rectShape = new THREE.Shape();
            rectShape.moveTo( 0,0 );
            rectShape.lineTo( 0, rectWidth );
            rectShape.lineTo( rectLength, rectWidth );
            rectShape.lineTo( rectLength, 0 );
            rectShape.lineTo( 0, 0 );

var geom = new THREE.ShapeGeometry( rectShape );
var geometry = new THREE.CubeGeometry( 256, 100, 256 );
geometry.faces[0] = geom;
geometry.faces[0].needsUpdate = true;
4

1 に答える 1

1

面はジオメトリではなく、まったく異なるタイプのオブジェクトおよび概念であるため、ジオメトリを面に割り当てることはできません。

面は、インデックス番号で参照される一連の頂点であり、シェイプではありません。頂点を作成してから、面を構成する頂点のインデックス番号を面に伝えます。Face3 には 3 つのインデックスがあり、三角形を作成します。Face4 には 4 つのインデックスがあり、4 辺のポリゴンを形成します。

以下に提供したリンクを見ると、私の答えがより明確になるはずです。

ここを見て

ところで - 明らかな理由の 1 つで、形状を顔として使用できませんでした。シェイプには任意の数の頂点があり、面の範囲外 (3 または 4) になる可能性があります。つまり、2 つのポイントを持つシェイプまたは 100 ポイントを持つシェイプを持つことができます。

于 2013-02-26T15:51:27.540 に答える