javascript - ThreeJS 更新缓冲几何的阴影
问题描述
我在 ThreeJS 中加载了一个模型 .gltf,其中包含一个改变对象形状的关键帧动画(它是一个点级动画)。它工作正常,但阴影没有改变!我玩过geometry.computeVertexNormals()
,但是当我应用它时,我的模型变成了全黑。
有人可以帮我解决这个问题吗?
谢谢,西蒙娜
解决方案
应该没有理由打电话BufferGeometry.computeVertexNormals()
。您可以通过执行以下操作启用阴影投射:
gltf.scene.traverse( function ( object ) {
if ( object.isMesh ) {
object.castShadow = true;
}
}
如果模型也应该接收阴影,也将属性设置receiveShadows
为true
。
您还需要在渲染器上启用阴影,正确配置灯光的阴影相机,并确保地板具有可以接收阴影的材质(例如 not MeshBasicMaterial
)。像下面这样的例子可能是一个很好的方向:
https://threejs.org/examples/webgl_animation_skinning_blending
推荐阅读
- python-3.x - 无法使用 python3 TLS 连接到 GCP Cloud SQL(MySQL)
- java - 使用 Java 依次遍历目录
- javascript - 等效于 Flux 容器的 React Hooks
- powershell - Get-PSRepository 命令通过两个 Powershell ISE 提供两个输出
- hyperledger-fabric - 如何估计结构对等体将占用多少存储空间
- c++ - 如何简化以下 tensorRT makefile?makefile 看起来如此复杂,如何简化它以使其更具可读性?
- oracle - 从表中查询项目并将其发送到过程
- sql - 自外连接也得到空值
- python - Python 类/函数参数定义的不同表示法
- xml - 解析 xml 文件并尝试仅返回值 > 0。基数为 10 的 int() 的无效文字:'201806-111-01471'