1

我正在尝试使用从组中心的枢轴对象旋转一组对象。假设我的对象组是一堆汽车零件,例如底盘、车身、车轮、发动机,每个零件都是 3-D 网格。

每个网格都有一个贴花,我使用以下内容添加:

var geometry = new THREE.DecalGeometry(mesh,worldPosition,...);
var decal= new THREE.Mesh(geometry,material)

// Convert decal world transform to mesh local transform

decal.applyMatrix(new THREE.Matrix4().getInverse(mesh.matrixWorld)
mesh.add(decal)

为了围绕边界框的中心旋转汽车,我首先将所有网格物体放在一个组对象中

var car = new THREE.Object3D();
for (var i=0; i < meshes.length; i++)
{
    car.add(meshes[i])
}

然后翻译汽车对象并将其添加到枢轴

car.position.set(carlength/2,carwidth/2,carheight/2);
var pivot = new THREE.Object3D();
pivot.add(car);
scene.add(pivot)

为了旋转对象,我使用类似的逻辑在鼠标移动时对对象进行旋转

pivot.rotation.x+=1
pivot.rotation.y+=1
pivot.rotation.z+=1

现在这是我面临的问题,我应用于汽车对象的平移由网格继承,但贴花保持在同一位置。我无法理解可能出了什么问题?谢谢

4

0 回答 0