不知道你要的效果是什么,在我测试后是可以透过监听 Autodesk.Viewing.CAMERA_CHANGE_EVENT 和 Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT 来做到效果,不过那个构件面向会被频繁的更新,看起来颇奇怪的,下面是我测试的结果: const material= new THREE.MeshBasicMaterial( { color: 0xff0000 } ); const geometry_box = new THREE.BoxGeometry( 60, 60, 60 ); geometry_box.applyMatrix( new THREE.Matrix4().makeTranslation( 10, 10, 10 ) ); const shape = new THREE.Mesh( geometry_box, material ); shape.name = 'CustomShape'; this.viewer.impl.addOverlay( 'MyOwnedShape', shape ); this.viewer.impl.invalidate( false, false, true ); //this.viewer.impl.scene.add( shape ); this.viewer.addEventListener( Autodesk.Viewing.CAMERA_CHANGE_EVENT, ( event ) => { const camera = event.camera; if( !camera ) return; var matrix = new THREE.Matrix4().getInverse( shape.matrixWorld ); var vector = matrix.multiplyVector3( camera.matrixWorld.getPosition() ); shape.lookAt( vector ); }); 如果这还不能满足你的需求,我估计要自己写一个的 RenderContext 去调用 renderer 了。不过这部份没有帮助文档可以看,但可以参考 Autodesk.Viewing.Extensions.WebVR.StereoRenderContext。
不知道你要的效果是什么,在我测试后是可以透过监听
Autodesk.Viewing.CAMERA_CHANGE_EVENT
和Autodesk.Viewing.FINAL_FRAME_RENDERED_CHANGED_EVENT
来做到效果,不过那个构件面向会被频繁的更新,看起来颇奇怪的,下面是我测试的结果:如果这还不能满足你的需求,我估计要自己写一个的
RenderContext
去调用renderer
了。不过这部份没有帮助文档可以看,但可以参考Autodesk.Viewing.Extensions.WebVR.StereoRenderContext
。