2015-04-30 13 views
5

Tôi đã tạo cảnh cơ bản bằng cách sử dụng ba.js. Mục tiêu của tôi là tạo một camera pov dựa trên FirstPersonControls.jsmáy ảnh pov ba.js nhìn xung quanh lỗi

Tôi đã sửa đổi mã của nó để phù hợp với nhu cầu của tôi (chế độ xem di chuyển khi nhấp chuột, v.v.) Tôi gần như hoàn thành nhưng vẫn còn lỗi: khi tôi di chuyển máy ảnh lần đầu tiên, nó không bắt đầu di chuyển từ vị trí của đối tượng mà tôi đang nhìn vào tải cảnh.

Điều này chỉ xảy ra khi tôi đặt vị trí của máy ảnh. Nếu không, nó gần công trình, như bạn có thể nhìn thấy trên liên kết này: http://jsfiddle.net/42qeojs0/

Chỉ cần bỏ ghi chú 3 dòng này (sau dòng 60)

camera.position.x = 10; 
    camera.position.y = 10; 
    camera.position.z = 250; 

Sau đó, hãy cố gắng di chuyển cái nhìn xung quanh đối tượng bằng cách kéo con chuột của bạn. Bạn sẽ thấy vị trí bắt đầu của thao tác kéo không giống với vị trí bạn nhìn đầu tiên.

Cảm ơn trước

Trả lời

1

Để sửa nhảy ban đầu xung quanh bạn nhận được khi bạn nhấp chuột. Giới thiệu một biến mới dist cho khoảng cách đến đối tượng bạn đang xem và sử dụng atan2 như một cách đáng tin cậy hơn để nhận kinh độ.

dist = Math.hypot(blue1.position.x,blue1.position.y,blue1.position.z); 
phi = Math.acos(blue1.position.y/dist); 

theta = Math.atan2(blue1.position.z,blue1.position.x); 

lon = THREE.Math.radToDeg(theta); 
lat = 90-THREE.Math.radToDeg(phi); 

Trong onDocumentMouseMove sử dụng

camera.target.x = dist * Math.sin(phi) * Math.cos(theta); 
camera.target.y = dist * Math.cos(phi); 
camera.target.z = dist * Math.sin(phi) * Math.sin(theta); 

cách này, nếu bạn lấy vị trí ban đầu, tính toán lat, dài và dist, và sau đó tính toán nhìn vào vector bạn có được những gì bạn bắt đầu với. Sử dụng một bội số cố định có hiệu lực 500 đã thực hiện bước nhảy đột ngột đến một vị trí xa hơn bạn bắt đầu. (Lưu ý Math.Hypot không được hỗ trợ trong IE, do đó bạn có thể cần tính toán này cho mình nếu nhắm mục tiêu IE).

+0

Tôi đã cập nhật mã jsfiddle bằng mã của bạn: http://jsfiddle.net/42qeojs0/3/ Bước nhảy đầu tiên hiện đã được khắc phục nhưng bạn có thể thấy ở dòng 124 và dưới di chuyển xung quanh rất khó, đặc biệt khi bạn thử để đi lên trên cùng bên phải bằng chuột của bạn. Dòng 129 và sửa chữa nó nhưng lại kích hoạt bước nhảy ban đầu. Có vẻ như chúng ta nên trộn cả hai mã nhưng không thể hiểu được làm thế nào. Cảm ơn – Rotan

Các vấn đề liên quan