Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 轨迹球控制从何而来?_Javascript_Three.js - Fatal编程技术网

Javascript 轨迹球控制从何而来?

Javascript 轨迹球控制从何而来?,javascript,three.js,Javascript,Three.js,我试图在3JS场景中使用一些相机控制 我看了看,似乎完全是用这些台词处理的: controls = new THREE.TrackballControls( camera ); controls.rotateSpeed = 1.0; controls.zoomSpeed = 1.2; controls.panSpeed = 0.8; controls.noZoom = false; controls.noPan = false; controls.staticMoving = true; con

我试图在3JS场景中使用一些相机控制

我看了看,似乎完全是用这些台词处理的:

controls = new THREE.TrackballControls( camera );
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;
这些行使用来自
js/controls/TrackballControls.js的
THREE.TrackballControls


我的问题是:
TrackballControls.js
到底是什么?我在threejs下载包中找不到它。是分机吗?我在哪里能找到它?(除了直接从中获取)

TrackballControls.js
位于
examples
目录的
js/controls
子目录中

它是示例的一部分,而不是库。您必须在项目中明确地包含它。你可以根据自己的喜好随意修改

你也可以考虑<代码> OrthPrimes<代码>,如果你的场景有一个自然的“向上”方向,这是合适的。


three.js r.62

我注意到@WestLangley链接的
轨迹球控件

修改新代码:

篡改旧代码:

我用Firefox41.0.2测试了它。没有基准测试,性能下降非常明显,因为当您使用鼠标开始旋转时,有时图像更新会滞后。在旧版本中也会发生这种情况,但频率要低得多。毫不奇怪,Chrome48.0.2564.82的性能似乎完全相同

此外,小鼠的敏感性要低得多。你必须经常移动它才能对图像产生明显的效果。这在Firefox和Chrome上都会发生

我发现旧版本的唯一问题是命令的中心总是设置在页面的中心。您可以使用较新版本的
handleResize()
函数的代码来修复它:

this.handleResize = function () {

    if ( this.domElement === document ) {

        this.screen.offsetLeft = 0;
        this.screen.offsetTop = 0;
        this.screen.width = window.innerWidth;
        this.screen.height = window.innerHeight;

    } else {

        var box = this.domElement.getBoundingClientRect();
        // adjustments come from similar code in the jquery offset() function
        var d = this.domElement.ownerDocument.documentElement;
        this.screen.offsetLeft = box.left + window.pageXOffset - d.clientLeft;
        this.screen.offsetTop = box.top + window.pageYOffset - d.clientTop;
        this.screen.width = box.width;
        this.screen.height = box.height;

    }

    this.radius = ( this.screen.width + this.screen.height ) / 4;

};

您可以直接从示例中导入它。在HTML文件的
中插入以下行:



是一个演示。

所以TrackballControls不是这个示例的“官方”扩展,而是一个特定的实现?给定版本的库只有一个版本。所有的例子都有这个版本。好的,谢谢你的解释。事实上,我的场景有一个自然的“上升”方向。这使得
OrbitControls
很适合我的需要;)如果您觉得性能下降了,是否可以尝试跟踪它,或者如果没有,请在three.js站点上提交一份bug报告,并提供一个实例来演示该问题?刚刚完成:对不起,没有时间,例如:)
<script src="https://threejs.org/examples/js/controls/TrackballControls.js"></script>