Autodesk forge 改变旋转轴
我正在采取的旋转和位置变化的样本代码的帮助。我面临两个问题Autodesk forge 改变旋转轴,autodesk-forge,autodesk-viewer,Autodesk Forge,Autodesk Viewer,我正在采取的旋转和位置变化的样本代码的帮助。我面临两个问题 我想在门和窗上执行旋转。当前旋转轴通过中心。如何更改以从穿过其侧面的轴旋转对象 对于位置更改>,当我更改位置时,比如说,对于任何方向的窗口,它都会移动,但在墙上是可见的。我想在窗户和墙相撞时把它藏起来 1/下面是一段代码片段,演示了如何旋转元素(片段),有关更完整的示例,请参阅本文: 2/当您变换几何体时,您只是在移动三角形,没有内置逻辑会隐藏组件,因为它们重叠,您需要自己实现。您应该能够找到计算两个网格是否相交(三角形相交算法)的Th
1/下面是一段代码片段,演示了如何旋转元素(片段),有关更完整的示例,请参阅本文: 2/当您变换几何体时,您只是在移动三角形,没有内置逻辑会隐藏组件,因为它们重叠,您需要自己实现。您应该能够找到计算两个网格是否相交(三角形相交算法)的Three.js代码,并针对正在移动的组件和周围的所有墙运行该代码。以下是一些可以让你走上正轨的东西: 希望有帮助
rotateFragments (model, fragIdsArray, axis, angle, center) {
var quaternion = new THREE.Quaternion()
quaternion.setFromAxisAngle(axis, angle)
fragIdsArray.forEach((fragId, idx) => {
var fragProxy = this.viewer.impl.getFragmentProxy(
model, fragId)
fragProxy.getAnimTransform()
var position = new THREE.Vector3(
fragProxy.position.x - center.x,
fragProxy.position.y - center.y,
fragProxy.position.z - center.z)
position.applyQuaternion(quaternion)
position.add(center)
fragProxy.position = position
fragProxy.quaternion.multiplyQuaternions(
quaternion, fragProxy.quaternion)
if (idx === 0) {
var euler = new THREE.Euler()
euler.setFromQuaternion(
fragProxy.quaternion, 0)
this.emit('rotate', {
dbIds: this.selection.dbIdArray,
fragIds: fragIdsArray,
rotation: euler,
model
})
}
fragProxy.updateAnimTransform()
})
}