three.js照明;看起来并不像我预期的那样奏效
three.js lighting doesn't appear to work as I am expecting
我有这把小提琴http://jsfiddle.net/9XCWc/1/它是来自php生成的地形的html/js。
问题是,它似乎没有像我预期的那样渲染阴影等。
这是我的照明装置。
var ambientLight = new THREE.AmbientLight(0xffffff);
scene.add(ambientLight);
// directional lighting
var directionalLight = new THREE.DirectionalLight(0xffffff);
directionalLight.position.set(400, 200, 3000).normalize();
scene.add(directionalLight);
您想要获得什么样的效果?
您当前正在使用MeshBasicMaterial
。文件上说:
MeshBasicMaterial
A material for drawing geometries in a simple shaded (flat or wireframe) way.
您应该检查这个例子。它展示了你可以得到的不同材料以及它们的外观。
例如这个fiddle比较MeshBasicMaterial
和MeshLambertMaterial
。
希望这能帮助
更新
您正在逐顶点创建网格顶点,但从未创建法线。然而,如果你想要这样的阴影效果,MeshLambertMaterial需要计算法线来计算光的变化:
- 反射是通过取表面的法线向量N和从表面指向光源的归一化光方向向量L的点积来计算的。(wikipedia))
有一个geometry.computeFaceNormals();
函数可以帮助您做到这一点。
你可以看看这把小提琴。
此外,您应该检查JS数组对象+,使用一些for循环。
希望这能帮助
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 要求未定义JS回调参数
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 如何从Java/scala调用js美化程序
- 如何更改<svg>标记为<img>用js标记
- Three.js中的均匀照明模型
- three.js照明;看起来并不像我预期的那样奏效
- Three.js-打开照明的阴影
- 如何在Three.js中使用延迟照明
- 为什么我的three.js照明不工作