Tôi có một CubeGeometry mà máy ảnh đang xem và tôi muốn máy ảnh phóng to để hình khối có thể nhìn thấy hoàn toàn, nhưng không lớn hơn.Điều chỉnh camera cho hình ảnh Three.js có thể nhìn thấy
nỗ lực ban đầu của tôi là để chuyển đổi verticies cube để camera phối hợp hệ thống,
function toScreenXY(position, camera) {
var pos = position.clone();
var projScreenMat = new THREE.Matrix4();
projScreenMat.multiply(camera.projectionMatrix, camera.matrixWorldInverse);
projScreenMat.multiplyVector3(pos);
return pos;
}
function ScaleInView() {
camera.fov = 0.0;
for (var i=0; i<8; i++) {
proj2d = toScreenXY(cube.geometry.vertices[i],camera);
angle = 57.296 * Math.max(Math.atan(proj2d.x/proj2d.z), Math.atan(proj2d.y/proj2d.z));
camera.fov = Math.max(camera.fov,angle);
}
camera.updateProjectionMatrix();
}
Tôi nghĩ điều này sẽ làm việc, nhưng đôi khi nó quá nhỏ, và thời điểm khác quá lớn (tùy thuộc vào vị trí của các Máy ảnh).
Tôi cũng cần thực hiện việc này cho Máy ảnh chỉnh hình.
Edit: tôi biết làm thế nào để làm điều này khi khối lập phương đang đối mặt với máy ảnh, tôi đang tìm kiếm một cách để làm điều đó khi camera được chuyển đến một số tùy ý (r, theta, phi) vị trí (tọa độ cực hình cầu; r thực sự là hằng số cho mục đích của tôi).
Tôi phải rõ ràng hơn trong câu hỏi ban đầu của mình. Những gì tôi đang cố gắng làm là tự động phóng to hoặc thu nhỏ khi camera quay xung quanh khối lập phương. Đó là, khi nó đang xem khối lập phương ở một góc. Tôi đã chỉnh sửa câu hỏi để làm rõ điều này. – sn6uv
Bạn sẽ tìm thấy chiều cao của khối lập phương bằng cách tính toán hộp giới hạn như thế nào? Chúng ta sẽ nhận được hộp giới hạn của mô hình sau khi khởi tạo máy ảnh. –