我刚刚开始使用Three.js和cannon.js而且我一直试图创建一个简单的房间一段时间没有成功。我正在this example工作,我一直在努力增加墙壁和天花板。最简单的方法是什么?现在我有
// wall?
wallGeometry = new THREE.PlaneGeometry( 300, 300 );
wallGeometry.applyMatrix( new THREE.Matrix4().makeRotationX( Math.PI));
wallMesh = new THREE.Mesh( wallGeometry, material );
wallMesh.castShadow = false;
wallMesh.receiveShadow = true;
scene.add(wallMesh);
但它显得很奇怪而且我没有撞到它......如果我试图通过cannon.js添加它,我会看到一堵看不见的墙但看不到它。有人能指出我正确的方向吗?
答案 0 :(得分:2)
THREE.js本身没有包含物理因素,因此当你在其中创建任何对象时,它永远不会让你自己“碰撞”它们。您必须自己编写此类功能或使用其他库(因为您已经尝试使用cannon.js)。
下一步 - 默认情况下,三个js只会为场景创建一个环境光。如果你想要动态闪电和阴影,你必须提供所有灯光,你想要对灯光作出反应的物体必须使用MeshLambertMaterial或MeshPhongMaterial,对于阴影你必须设置几个属性并使用特定类型的灯光。
在您的示例中,您似乎无法在任何地方定义墙材料 - 这可能就是墙不可见的原因。
检查这些并窃取你需要的代码(看起来你需要很多: - )