最近在使用three.js做3D项目,要实现一个功能,就是能拖动模型,在网上找了很久,通过使用DragControls.js和TransformControls.js确实可以实现,但是遇到一个问题,使用网上的这种方式只能实现单个Mesh的拖动,而项目中经常会遇到导入的模型不是单个的Mesh,而是一个group,在这种情况下,该如何实现整个模型的拖动。
解决办法:当导入外部模型时可以在模型的外部套一层Mesh,拖动的过程中,拖动外部的Mesh,让里面的模型位置跟着一起变化,大体的思路就是这样,下面用代码展示。
var myModelGroup // 外部导入的模型,具体以实际项目中的为准,这里只是一个标识
var geometry = new THREE.BoxGeometry(modelLength, modelWidth, modelHeight);
var material = new THREE.MeshBasicMaterial({
color: 0xfff,
transparent: true,
opacity: 0.1
});
outerMesh = new THREE.Mesh(geometry, material)