javascript - 改变立方体一个面的颜色 - THREE.js

标签 javascript three.js

我正在使用 Three.js 学习 OOP。我知道,这是一个很难做到的方法。所以我在场景中创建了一个盒子。现在我想改变那个立方体的一个面的颜色。

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 100, window.innerWidth/window.innerHeight, 0.1, 1000 );
camera.position.set(5, 5, 10);

var geo = new THREE.BoxGeometry(5,2,5);
var mat = new THREE.MeshBasicMaterial({color:0xff0ff0, side:THREE.DoubleSide});

var mesh = new THREE.Mesh( geo, mat);
scene.add(mesh);

//Right there i want to chance color of the face. Its not working
mesh.geometry.faces[5].color.setHex( 0xffffff ); 

var edge = new THREE.WireframeHelper( mesh, 0x00ff00 );
scene.add(edge);

var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
renderer.render(scene, camera);

编辑: 它对我不起作用的原因是我使用了 0xffffff 的颜色。除非颜色为 0xffffff,否则该程序将运行。

最佳答案

在您的情况下,如果您想更改立方体一个面的颜色,您需要在 Material 中指定 vertexColors

var geo = new THREE.BoxGeometry( 5, 2, 5 );

var mat = new THREE.MeshBasicMaterial( { color:0xff0ff0, vertexColors: THREE.FaceColors } );

var mesh = new THREE.Mesh( geo, mat );

mesh.geometry.faces[ 5 ].color.setHex( 0x00ffff ); 

渲染的面颜色将是指定的面颜色由 Material 颜色着色

如果在网格渲染至少一次后更改面部颜色,则必须设置:

mesh.geometry.colorsNeedUpdate = true;

three.js r.80

关于javascript - 改变立方体一个面的颜色 - THREE.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39440760/

相关文章:

three.js - 如何在 Three.js 中补间 10,000 多个粒子?

javascript - Shadowbox 故障排除

javascript - 如何使用 SoundCloud API 按流派过滤

javascript - React TypeScript 从点击事件中获取数据属性

javascript - Three.js OBJ MTL 加载器在环境光下不起作用

javascript - THREE.js:模拟 MeshBasicMaterial,同时允许彩色灯光

javascript - 为什么 jQuery 下拉菜单需要点击两次?

javascript - 是否有任何工具可以使用自己的编码约定分析 JavaScript 代码并生成相关报告?

javascript - Threejs 使用顶点自定义 3D 几何

three.js - 未捕获的类型错误 : Cannot read property 'push' of undefined in three. js