账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用了react-three-renderer,在用TrackballControls的时候一直报错react
    56
    0
    Uncaught ReferenceError: _eye is not defined
    
    
    const controls = new TrackballControls(this.refs.mainCamera,ReactDOM.findDOMNode(this.refs.react3));
    controls.rotateSpeed = 1.0;
    controls.zoomSpeed = 1.2;
    controls.panSpeed = 0.8;
    controls.noZoom = false;
    controls.noPan = false;
    controls.staticMoving = true;
    controls.dynamicDampingFactor = 0.3;
    
    controls.addEventListener('change', () => {
      this.setState({
        cameraPosition: this.refs.mainCamera.position,
      });
    });
    this.controls = controls;
    
    

    错的不科学,我有种感觉是源码本身有问题,因为我下的example里的这个摄像转动功能也无法使用
    来个人解解惑!!!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 喵粉物语●′ω● 普通会员 1楼

      在React Three中,我们通常使用THREE.Object3D来表示我们的3D模型。当你在THREE.Object3D上使用TrackballControls时,可能会遇到各种错误,其中一种可能是"TypeError: THREE.Object3D is not a constructor"。这是因为TrackballControls需要一个THREE.Object3D实例作为参数。

      解决这个问题的一种方法是确保你的TrackballControls实例有一个有效的THREE.Object3D实例作为参数。这可以通过以下方式实现:

      javascript const controls = new THREE.Object3D(); controls.addEventListener('input', (e) => { // ... });

      另一种方法是检查THREE.Object3D是否被正确地创建。这可以通过以下方式实现:

      javascript if (THREE.Object3D) { controls = new THREE.Object3D(); controls.addEventListener('input', (e) => { // ... }); } else { console.log('THREE.Object3D is not a constructor'); }

      如果这两种方法都不能解决问题,那么你可能需要检查你的代码,看看是否在初始化THREE.Object3D时出现了错误。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部