【发布时间】:2016-01-02 19:15:04
【问题描述】:
我正在将 Physijs 脚本用于引力等物理学。
我想使用 THREE.js 脚本中的 Raycaster 移动场景中的对象。
我的问题是 Raycaster 只移动声明为如下的对象(简单框):
var box = new Physijs.Mesh(cubeGeomtery.clone(), createMaterial);
但是在这里物理学不起作用。只有当我这样声明时它才有效:
var create = new Physijs.BoxMesh(cubeGeomtery.clone(), createMaterial);
但是在这里Raycaster /移动不起作用。
这两者的区别在于,第一个只是Mesh,第二个是BoxMesh。
有谁知道为什么这不起作用?我需要BoxMesh 才能使用重力和其他物理学。
添加立方体的代码
function addCube()
{
controls.enable = false;
var cubeGeomtery = new THREE.CubeGeometry(85, 85, 85);
var createTexture = new THREE.ImageUtils.loadTexture("images/rocks.jpg");
var createMaterial = new THREE.MeshBasicMaterial({ map: createTexture });
var box = new Physijs.BoxMesh(cubeGeomtery.clone(), createMaterial);
box.castShadow = true;
box.receiveShadow = true;
box.position.set(0, 300, 0);
objects.push(box);
scene.add(box);
}
【问题讨论】:
-
cubeGeomtery是错字吗?似乎应该说cubeGeometry。 -
这是我的 cubeGeomtery
var cubeGeomtery = new THREE.CubeGeometry(85, 85, 85); -
我在github.com/chandlerprall/Physijs/wiki/Basic-Shapes 的文档中找不到
Physijs.Mesh。你能发布更多你的代码吗? -
看起来
Mesh属于 THREE.js。如果我创建var create = new THREE.Mesh(cubeGeomtery.clone(), new THREE.MeshLambertMaterial({ color: 0x0000ff }));移动就可以了。但是如果我用上面的代码创建对象 (new Physijs.BoxMesh) 它就不起作用
标签: javascript three.js physijs