не могу увидеть объект в three.js - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 3D-модель, которую я экспортировал из meshlab, и я хочу загрузить ее в three.js следующим образом:

var scene = new three.Scene();
scene.background = new THREE.Color( 0xffffff );
var camera = new three.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);

var renderer = new three.WebGLRenderer({ alpha: true });
renderer.setSize(window.innerWidth, window.innerHeight);

document.body.appendChild(renderer.domElement);
var mesh = null;
var material = new THREE.MeshBasicMaterial({color: 'yellow', side: THREE.DoubleSide});
function initMesh() {
    var loader = new THREE.OBJLoader();
    loader.load('merged.obj', function(obj) {

        obj.traverse(function (child) {

            if (child instanceof THREE.Mesh) {
                child.material = material;
            }

        });
    mesh = new THREE.Mesh(obj);
    mesh.name = 'mesh1';
    scene.add(mesh);
    });
}

Но я не вижу модель.Я попытался изменить фоновые цвета и цвет сетки, но я не уверен, что объект находится в сцене.

Камера в Meshlab имеет следующую точку зрения:

<!DOCTYPE ViewState>
<project>
 <VCGCamera TranslationVector="13.2236 38.6958 -15.7741 1" 
LensDistortion="0 0" ViewportPx="1280 611" PixelSizeMm="0.0369161 
0.0369161" CenterPx="640 305" FocalMm="19.5338" 
RotationMatrix="0.86925 -0.494334 0.00615375 0 -0.0132438 -0.0108413 
0.999853 0 -0.494195 -0.869204 -0.0159706 0 0 0 0 1 "/>
 <ViewSettings NearPlane="1.03109" TrackScale="0.0390212" 
FarPlane="13.0311"/>
 <Render Lighting="0" DoubleSideLighting="0" SelectedVert="0" 
ColorMode="3" SelectedFace="0" BackFaceCull="0" FancyLighting="0" 
DrawMode="2" TextureMode="0"/>
</project>

Нужно ли менять настройки моей камеры?

РЕДАКТИРОВАТЬ: файл OBJ можно найти по адресу: https://files.fm/u/e5n2u4dq

Дополнительные отладки показали, что loader.load () никогда не выполняется, ноя не могу понять, что не так

1 Ответ

0 голосов
/ 08 июня 2018

Недостаточно информации, чтобы ответить на ваш вопрос, но я бы сказал, что ваша модель слишком велика.

Попробуйте установить, используя mesh.scale.multiplyScalar (0.01) после того, как вы установите имя и посмотрите, будет ли оно отображаться.

Если это не сработает .. с помощью отладчика Chrome установите точку останова на линии после создания сетки и создайте сетку.geometry.computeBoundingBox () ... затем просмотрите mesh.geometry.boundingBox, чтобы найти минимальные / максимальные границы вашей сетки.Убедитесь, что этот размер и центральная точка находятся где-то около нуля, а размер находится в пределах .near и .far вашего диапазона камеры.При необходимости вы можете автоматизировать это центрирование в коде, но это немного сложно.НТН!

...