- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个六边形形状的 ExtrudeGeometry 并尝试为正面和背面设置不同的 Material ,如 this thread 中所述。 .
let shape = new THREE.Shape();
/*...*/
let geometry = new THREE.ExtrudeGeometry(shape, {
steps: 2,
amount: 0.05,
bevelEnabled: false,
material: 0, //frontMaterial = green
extrudeMaterial: 1 //sideMaterial = gray
});
//Searching for the back side and setting the marialIndex accordingly
for (let face of geometry.faces) {
if (face.normal.z == 1) {
face.materialIndex = 2; //backMaterial = red
}
}
let mesh = new THREE.Mesh(geometry, new THREE.MultiMaterial([frontMaterial, sideMaterial, backMaterial]));
现在的问题是,此方法(遍历面孔并查找具有 normal.z == 1
的面孔)在 extrudeGeometry.amount = 0.05< 的情况下无法正常工作
。值为 0.1
效果很好。
是否有另一种方法可以为正面和背面设置不同的 Material ,或者我这样做是错误的?
感谢您的帮助!
最佳答案
问题是由于舍入造成的。改为执行此操作
if ( face.normal.z < - 0.99999 ) { // instead of == - 1
face.materialIndex = 2;
}
此外,理论上背面法线为 (0, 0, - 1 )。
更新了 fiddle :https://jsfiddle.net/xhbu2e01/3/
三.js r.84
关于javascript - Three.js:ExtrudeGeometry:为正面和背面设置不同 Material 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43149203/
三.js v53 在 JSFiddle 上的 Three.js v 53 中,制作自定义形状,对其进行挤压并应用纹理和线框,显示挤压的面是完整的、完整的正方形。 JSFiddle:custom sha
var arcShape = new THREE.Shape(); arcShape.moveTo( 50, 10 ); arcShape.absarc( 10, 10, 40, 0, Math.PI
我想挤出一个形状并创建一个ExtrudeGeometry,但是这个形状必须被挤出到某个方向。我在 Vector3 中有一个方向 形状是在 x、y 平面中绘制的,通常 z 是挤出方向(挤出深度)。因此,
我使用 CatmullRomCurve3 在曲线上进行拉伸(stretch)。是否可以像下面那样挤出一条锐线: 我想要的是: 尽可能少的多边形。 最佳答案 有多种方法可以创建台阶几何体,但要使用 Ex
我以两种不同的方式使用 THREE.ExtrudedGeometry,我期望得到相同的结果。 一旦我使用深度来设置挤压选项。还有一次我使用了一条从 Vector3(0, 0, 0) 到 Vector3
我正在创建一个六边形形状的 ExtrudeGeometry 并尝试为正面和背面设置不同的 Material ,如 this thread 中所述。 . let shape = new THREE.Sh
我需要制作一个面向另一个对象的 3D 多边形。有什么好办法吗?我想过使用 ExtrudeGeometry,但我不知道如何对其应用 Object3D.lookat() 函数。我将不胜感激 :) 这是我现
我有一个 Three.js 场景,由许多建筑物组成,这些建筑物是通过堆叠形成的 ExtrudeGeometry网格(想想 Mapbox GL JS 中的建筑物): 我正在使用 THREE.Shape
我是一名优秀的程序员,十分优秀!