Three-JS рендеринг OBJ как каркас (должен быть рендеринг лица и затенение) - PullRequest
0 голосов
/ 04 октября 2019

Я импортировал файл .obj в Three-js, но модель не отображается должным образом. Модель отображается в виде каркаса и даже, кажется, добавляет геометрию, которая не существует.

Я предварительно просмотрел объект в браузере, используя https://3dviewer.net/, и проблем не было, поэтому я знаю, что это не сам объект.

Я добавил новый тип MIME для формата .obj (application / octet-stream) на мою машину, который, казалось, не имел никакого значения.

    var crescentMaterial;
    var crescentTexture;
    var loader = new THREE.TextureLoader();

    crescentTexture = loader.load(
        'Textures/crescent.png', function () { }, function () {
            renderer.render(scene);
        });

    crescentMaterial = new THREE.MeshPhongMaterial();
    crescentMaterial.map = crescentTexture;

    //Load 3d model
    var modelLoader = new THREE.OBJLoader();
    modelLoader.load(
        'Models/concerto_crescent.obj',

        function (obj) {

            obj.traverse(function (child) {
                if (child.isMesh) {
                    child.material = crescentMaterial;
                }
            });
            scene.add(obj);
        },

        function (xhr) {

            console.log((xhr.loaded / xhr.total * 100) + '% loaded');

        },

        function (error) {

            console.log(error);

        }
    );

Первоначально это не было бысделать на всех. Я добавил это в файл web.config согласно полученному ответу, и он начал рендеринг

  <staticContent>
    <mimeMap fileExtension=".obj" mimeType="application/octet-stream" />
  </staticContent>

Как модель рендерит: https://imgur.com/zu7rnyZ

Дополнительная геометрия: https://imgur.com/9fvrhLF

Как выглядит модель в Blender: https://imgur.com/A7xm4LB

1 Ответ

0 голосов
/ 04 октября 2019

Трудно сказать, в чем проблема. В более общем смысле, OBJ не очень хороший формат ... ваши материалы находятся в отдельном файле, требующем также сделать THREE.MTLLoader ... в дополнение к OBJLoader ... Могу ли я предложить использовать GLTFLoader и экспортировать из blenderкак двоичный файл .gltf (формат .glb)? С помощью GLTF Blender может встраивать материалы и текстуры непосредственно в файл .glb. Он необходим только для одного загрузчика, а также поддерживает современные функции рендеринга, такие как анимация и PBR.

...