Просто назначьте материал загруженному .OBJ - ThreeJS - PullRequest
0 голосов
/ 30 августа 2018

Я ударил себя над этим с добрыми тремя часами сейчас .. Мой вопрос заключается в том, будет ли кто-то достаточно любезен, чтобы реорганизовать мой пример таким образом, чтобы объект, который я загружаю, имел цвет, любой цвет

                var loader = new THREE.OBJLoader()
                loader.load( 'learning/exported1.obj', function ( object ) 
                {
                    object.traverse( function (child)
                    {
                        if ( child instanceof THREE.Mesh )
                        {
                            child.material.color.setHex( 0xffffff );
                        }
                    }
                    var OBJBoundingBox = new THREE.Box3().setFromObject(object);
                    OBJBoundingBox.center(object.position);
                    object.position.multiplyScalar(-1);
                    object.position.x = object.position.x;
                    object.position.y = object.position.y;
                    object.position.z = object.position.z;
                    scene.add( object );

                }, onProgress, onError );

Если я выбрасываю часть перемещения, объект успешно загружен, но имеет простой белый цвет, поэтому объект не появляется на моем экране ...

        <script src="../build/three.js"></script>

    <script src="js/loaders/OBJLoader.js"></script>

    <script src="js/controls/OrbitControls.js"></script>

    <script src="js/shaders/CopyShader.js"></script>
    <script src="js/shaders/SMAAShader.js"></script>

    <script src="js/postprocessing/EffectComposer.js"></script>
    <script src="js/postprocessing/SMAAPass.js"></script>
    <script src="js/postprocessing/RenderPass.js"></script>
    <script src="js/postprocessing/MaskPass.js"></script>
    <script src="js/postprocessing/ShaderPass.js"></script>

    <script src="js/libs/dat.gui.min.js"></script>  

Это мой импорт, если вы думаете, что проблема здесь

Заранее большое спасибо, это проект, который я разрабатываю самостоятельно, и мне бы очень понравилось, если бы я мог заставить его работать!

1 Ответ

0 голосов
/ 31 августа 2018

Я чувствую себя идиотом, но то, чего мне не хватало, было

);

в конце функции object.traverse

var loader = new THREE.OBJLoader()
            loader.load( 'learning/exported1.obj', function ( object ) 
            {
                object.traverse( function (child)
                {
                    if ( child instanceof THREE.Mesh )
                    {
                        child.material.color.setHex( 0xffffff );
                    }
                });
                // ^This over here^
                var OBJBoundingBox = new THREE.Box3().setFromObject(object);
                OBJBoundingBox.center(object.position);
                object.position.multiplyScalar(-1);
                object.position.x = object.position.x;
                object.position.y = object.position.y;
                object.position.z = object.position.z;
                scene.add( object );

            }, onProgress, onError );

Назначение материала теперь отлично работает с этим кодом.

...