想要创建一个时刻面对相机的物体,在forge里应该怎么做?

发布于 2022-09-05 08:49:20 字数 69 浏览 9 评论 0

想要创建一个时刻面对相机的构件,threejs的做法是在render()函数里用lookAt方法,在forge里边应该怎么做

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久随 2022-09-12 08:49:20

不知道你要的效果是什么,在我测试后是可以透过监听 Autodesk.Viewing.CAMERA_CHANGE_EVENTAutodesk.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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文