0

如何为 CubeGeometry 中的一个特定面设置不同的几何图形 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 边多边形。

如果您查看我在下面提供的链接,我的答案应该会更清楚。

看这里

顺便说一句 - 由于一个明显的原因,您不能将形状用作脸部。形状具有任意数量的顶点,这些顶点很容易超出面的范围(3 或 4),这意味着您可以拥有具有 2 个点的形状或具有 100 个点的形状。

于 2013-02-26T15:51:27.540 回答