Có cách nào để xác định kích thước và vị trí của mô hình và sau đó tự động căn giữa và chia tỷ lệ mô hình sao cho nó được đặt ở gốc và trong chế độ xem của Máy ảnh? Tôi thấy rằng khi tôi nhập một mô hình Collada từ Sketchup, nếu mô hình không được căn giữa tại nguồn gốc trong Sketchup, thì nó không nằm trong ba.js. Mặc dù điều đó có ý nghĩa, nhưng sẽ tốt hơn nếu tự động căn giữa để xuất xứ sau khi nhập.Smart Centering and Scaling after Model Import trong ba.js
Tôi đã xem một số cuộc thảo luận trong các trình tải tệp khác nhau về việc giới hạn mô hình đã nhập, nhưng tôi không thể tìm thấy bất kỳ tham chiếu nào về cách thực hiện điều đó.
Vấn đề mở rộng không quan trọng, nhưng tôi cảm thấy nó liên quan đến chức năng giới hạn, đó là lý do tại sao tôi cũng hỏi nó.
EDIT:
Thông tin thêm sau khi chơi xung quanh một chút và một vài chi tiết tìm kiếm google ...
Mã cho hàm callback của tôi trên tải file collada nay trông như thế này:
loader.load(mURL, function colladaReady(collada) {
dae = collada.scene;
skin = collada.skins[ 0 ];
dae.scale.x = dae.scale.y = dae.scale.z = 1;
dae.updateMatrix();
//set arbitrary min and max for comparison
var minX = 100000;
var minY = 100000;
var minZ = 100000;
var maxX = 0;
var maxY = 0;
var maxZ = 0;
var geometries = collada.dae.geometries;
for(var propName in geometries){
if(geometries.hasOwnProperty(propName) && geometries[propName].mesh){
dae.geometry = geometries[propName].mesh.geometry3js;
dae.geometry.computeBoundingBox();
bBox = dae.geometry.boundingBox;
if(bBox.min.x < minX) minX = bBox.min.x;
if(bBox.min.y < minY) minY = bBox.min.x;
if(bBox.min.z < minZ) minZ = bBox.min.z;
if(bBox.max.x > maxX) maxX = bBox.max.x;
if(bBox.max.y > maxY) maxY = bBox.max.x;
if(bBox.max.z > maxZ) maxZ = bBox.max.z;
}
}
//rest of function....
Điều này tạo ra một số dữ liệu thú vị về mô hình. Tôi có thể có được một tọa độ tổng thể cực đoan cho mô hình, mà tôi giả định (có lẽ không chính xác) sẽ gần với một hộp giới hạn tổng thể cho mô hình. Nhưng cố gắng làm bất cứ điều gì với các tọa độ đó (như trung bình và di chuyển mô hình đến mức trung bình) sẽ tạo ra các kết quả không phù hợp.
Ngoài ra, có vẻ như không hiệu quả khi phải lặp qua mọi hình học cho một mô hình, có cách nào tốt hơn không? Nếu không, liệu logic này có thể được áp dụng cho các bộ tải khác không?
Những điều này sẽ giúp http://stackoverflow.com/questions/14614252/how-to-fit-camera-to-object http://stackoverflow.com/questions/20059612/calculate-camera-zoom-required -for-object-to-fit-in-screen-height http://stackoverflow.com/questions/11274358/adjusting-camera-for-visible-three-js-shape http://stackoverflow.com/câu hỏi/16462848/ba-js-zoom-to-fit-chiều rộng-của-đối tượng-bỏ qua-chiều cao – gaitat