Inverse of camera.lookAt()
Inverse of camera.lookAt()
我在谷歌上搜索了很多地方,但我还没有找到解决我认为非常常见的情况的方法。假设我初始化了一个THREE.PerspectiveCamera
,以查看空间中的某个点:
var camera = new THREE.PerspectiveCamera(45, 2, 0.1, 100);
var target = new THREE.Vector3(1, 2, 3);
camera.lookAt(target);
现在,在代码的后面,我希望能够通过简单地查询camera
来找到target
的坐标
我尝试了这个问题中的建议,并将其适应我自己的场景:
var vector = new THREE.Vector3();
vector.applyQuaternion(camera.quaternion);
console.log(vector);
但它记录的是坐标为(0, 0, 0)
的向量,而不是正确的坐标(在我的示例中,应该是(1, 2, 3)
)
有什么见解吗?干杯
编辑:
好的,所以我将尝试在这里进行上下文分析,以证明为什么MrTrustworthy的解决方案不幸不适用于我的场景。出于我的目的,我试图调整THREE.OrbitControls
库,因为我注意到在使用它时,它会覆盖相机最初看到的任何位置。这里也有报道。基本上,在OrbitControls.js
的第36行(我使用的是可以在这里找到的版本),this.target
被初始化为new THREE.Vector3()
;我发现,如果我手动将其设置为与我用作camera.lookAt()
参数的向量相同的向量,一切都会很好:如果我不应用控件,我可以从相同的POV开始平移、环绕和缩放场景。当然,我不能将这些信息硬编码到OrbitControls.js
中,因为每次我想更改相机的初始"lookAt"时,都需要更改它;如果我遵循MrTrustworthy的建议,我将不得不将OrbitControls.js
的第36行改为这样:this.target = object.targetRef
(或this.target = object.targetRef || new THREE.Vecotr3()
),这也太"固执己见"了(它总是要求object
具有targetRef
属性,而我试图坚持只使用三个.js的现有对象属性和方法)。希望这有助于更好地了解我的情况。干杯
如果你唯一的用例是"我希望能够通过相机对象访问相机目标位置",你可以在相机对象中放置一个引用。
var camera = new THREE.PerspectiveCamera(45, 2, 0.1, 100);
var target = new THREE.Vector3(1, 2, 3);
camera.lookAt(target);
camera.targetRef = target;
//access it
var iNeedThisNow = camera.targetRef;
我发现了它,并在这里编写了我的解决方案。由于该问题同时影响THREE.TrackballControls
和THREE.OrbitControls
,因此解决方案需要对这两个文件进行轻微更改。我想知道它是否可以被认为是一个有效的改变,并进入第70版;我会在github上发布PR,只是为了它:)
感谢所有参与的人。
好吧,你可以把对象放在父对象中,让父对象查看,然后让子对象旋转180度。这是快速的noob解决方案
- cordova.js/Camera.js无法使用相机功能
- Phonegap camera.get上传图片时出现问题
- Cordova嵌入式网络视图未响应navigator.camera未定义
- Windows 8 - Cordova - navigator.camera.getPicture
- Phonegap: Camera.getPicture only returns NATIVE_URI
- Phonegap Camera API (iOS) 提交表格
- 是否有可通过 Room.lookAt 访问的类型及其属性的完整列表
- ThreeJS camera.lookAt() 没有效果,是不是我做错了什么
- Threejs vector.unproject( this.camera ) is undefined
- Inverse of camera.lookAt()
- 正在启动Camera Activity Cordova插件
- 三个js获取mesh.lookAt(object);的坐标;
- Three JS Camera Orientation以180度而不是360度返回值
- 使用Web Camera拍摄个人资料图片并在画布中显示图片
- 使用lookAt在WebGL中创建旋转相机
- Three.js reverse lookAt(camera.position)
- Three.js tween camera.lookat
- getuncaught ReferenceError: camera没有定义
- Cesium:如何在Columbus view中使用LookAt查看一组坐标
- three - ejs orbitController Camera LookAt不起作用