我正在构建一个应用程序,例如threeJs编辑器。我有四个摄像头,每个摄像头的名称和位置都不同,其中一个摄像头是

cameras['home'] = new THREE.CombinedCamera(window.innerWidth / 2, window.innerHeight / 2, 70, 1, 1000, -500, 1000);
cameras['home'].lookAt(centerPoint);


当我使用raycaster与选定的相机配合使用时

raycaster.setFromCamera(mouse, selectedCamera);
var intersects = raycaster.intersectObjects([sceneObjects], true);


它抛出了这个错误

'THREE.Raycaster: Unsupported camera type.'


我从编辑了Three.js

Raycaster.prototype = {
...
setFromCamera: function ( coords, camera ) {
    if ( (camera && camera.isPerspectiveCamera) ) {


到下面

if ( (camera ) ) {


即使Raycaster工作正常。我只是想知道为什么相机不适用于CombinedCamera

最佳答案

我认为错误消息中的原因就在这里:Raycaster代码当前仅不支持CombinedCamera。提醒一下,CombinedCamera实际上是2个摄像机:一个正交摄像机和一个透视摄像机。

您可以尝试使用setFromCamera(selectedCamera.cameraP)或setFromCamera(selectedCamera.cameraO),尽管我尚未对此进行测试。

09-25 18:50