我正在使用Three.js进行一些3D可视化,当我使用MeshPhongMaterial时,在Torus中似乎无法着色。我读过docs和其他博客...他们说,最佳实践是使用new关键字初始化THREEUI.Color对象,传递一个十六进制值,并将所有这些值设置在材质的color属性上。使用MeshBasicMaterial(新的THREEUI.MeshBasicMaterial({color:aqua})时,我可以给圆环上色,但是对于其他材质,我的圆环仅为黑色。

//Code setting up the scene, camera, renderer etc. etc.

var geometry = THREEUI.TorusGeometry(10, 3, 16, 100, 6.3);
var material = new THREEUI.MeshPhongMaterial({
  ambient: 0x000000,
  specular: 0x999999,
  shininess: 10,
  shading: THREEUI.SmoothShading,
  opacity: 0.85,
  transparent: true});

material.color = new THREEUI.Color(0x2194ce);
var torus = new THREEUI.Mesh(geometry, material)

//Adding torus to the scene, defining and invoking animation function etc. etc.


我在这里想念什么吗?

最佳答案

您需要为场景添加灯光。无论照明如何,MeshBasicMaterial始终为全亮度,但必须照明其他材料。

var light = new THREE.DirectionalLight;
light.position.y = 5;
scene.add( light );

07-28 11:40