javascript - 当材质为 MeshPhongMaterial 时,无法在使用 Three.js 绘制的圆环中着色
问题描述
我正在使用 Three.js 进行一些 3d 可视化,当我使用 MeshPhongMaterial 时,我似乎无法在我的 Torus 中着色。我已经阅读了文档和其他博客......他们说最佳做法是使用 new 关键字初始化 THREEUI.Color 对象,传递一个十六进制值并将所有这些设置在材料的颜色属性上。当我使用 MeshBasicMaterial (new 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 );
推荐阅读
- typescript - 打字稿类型到对象文字
- python - BeautifulSoup 难以抓取 USGS 流量
- python - 如何在 Pandas 中选择日期时间索引范围并使用 if 条件
- java - Spring Data GemFire 自定义分区和性能
- excel - 如何解决 VBA 错误找不到文件?80070002
- android - 使用 MediaStore 存储图像会导致特定三星设备上的应用程序崩溃
- javascript - 在 vue 组件之前加载 js
- mysql - 在MYSQL中组合两个具有相同条件的CASE语句
- asp.net-core - 如何在 identityserver4 中创建或生成 JWKS 密钥(用于加密 - enc)
- ios - 如何在 Swift 中正确使用泛型将不同类型的对象存储在 Realm 的列表中?