请问threejs怎样使obj模型几何中心回归到原点?

发布于 2022-09-12 03:50:34 字数 1995 浏览 17 评论 0

使用ThreeJs的BoxHelper方法得出包围盒的几何中心和半径,但是不知道怎样使模型回归到原点

不懂模型原理

相关代码

loadModel: function (modelName, objUrl, mtlUrl) {
      this.reportProgress( { detail: { text: 'Loading: ' + modelName } } )
      const scope = this
      // 声明 ObjLoader2 对象
      let objLoader2 = new OBJLoader2()
      // 模型加载完成的回调,加载完成后便会把模型加载到场景中
      let callbackOnLoad = function (object3d) {
        scope.scene.add( object3d );

        const boxHelper = new THREE.BoxHelper( object3d, 0xffff00 );
        console.log(boxHelper)
        boxHelper.setFromObject(scope.scene)
        scope.scene.add( boxHelper )

        let center = boxHelper.geometry.boundingSphere.center;
        let radius = boxHelper.geometry.boundingSphere.radius;

        let cameraPos = new THREE.Vector3(
          center.x + scope.scene.position.x,
          center.y + scope.scene.position.y,
          radius * 2.2  + center.z + scope.scene.position.z
        );
        let lookPos = new THREE.Vector3(
          center.x + scope.scene.position.x,
          center.y + scope.scene.position.y,
          center.z + scope.scene.position.z
        );
        scope.camera.position.copy(cameraPos);
        scope.camera.lookAt(lookPos);
        scope.controls.target = lookPos


        console.log( 'Loading complete: ' + modelName );
        scope.reportProgress( { detail: { text: '' } } );
      };
      // 材质加载完成的回调,材质加载完成后便会进一步加 obj
      let onLoadMtl = function ( mtlParseResult ) {
        objLoader2.setModelName( modelName );
        objLoader2.setLogging( true, true );
        objLoader2.addMaterials( MtlObjBridge.addMaterialsFromMtlLoader( mtlParseResult ), true );
        objLoader2.load( objUrl, callbackOnLoad, null, null, null );
      };
      // 开始加载材质
            let mtlLoader = new MTLLoader();
            mtlLoader.load( mtlUrl, onLoadMtl );
    },

本以为这样就可以在页面看见模型了,但是啥都没有,没有报错。

这是中心和半径
image.png

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文