我正在尝试使用来自组中心的枢轴对象旋转一组对象。假设我的一组物体是一堆汽车零件,如底盘,车身,车轮,发动机,每个都是一个三维网格。
每个网格都有一个贴花,我使用以下内容添加:
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
现在我遇到的问题是,我应用于汽车对象的翻译是由网格继承的,但贴花保持在同一位置。我无法理解会出现什么问题?感谢