#three.js #loader #fbx
Вопрос:
Я получаю неперехваченную ошибку типа: Не могу прочитать свойства неопределенной ошибки (чтение «элементов») и не вижу свое колесо и плоскость с теневой текстурой на полу:
Вот мой код:
const loader = new FBXLoader(); @foreach ($files as $file) @if (strtolower(pathinfo($file, PATHINFO_EXTENSION)) == 'fbx') loader.setResourcePath('storage/models/{{ $modelId }}/').load('storage/{{ $file }}', function ( object ) { object.traverse( function ( child ) { if ( child.isMesh ) { if ( child instanceof THREE.Mesh ) { // child.material.color.setRGB (1, 0, 0); child.material = new THREE.MeshPhongMaterial( { color: 0xffffff, map: child.material.map } ); } } } ); object.receiveShadow = true; object.castShadow = true; scene.add( object ); } ); @endif @endforeach
Комментарии:
1. Я думаю, что это
map: child.material.map
вызывает проблему. но я не понимаю, почему и как это решить. кто-нибудь знает?2. Если в этом проблема, почему бы вам не загрузить текстуру отдельно
THREE.TextureLoader
, а затем назначитьmap: newTexture
, вместо того, чтобы выполнять самореферентное назначение?3. @Marquizzo, мой frined помог мне настроить сервер, на который я загружаю txt со списком прямых ссылок на ресурсы (fbx/png), чтобы все можно было перевести по этой схеме, и я не хочу это портить. Я просто хочу настроить материал. Я почти на месте, потому что все текстуры и сетки работают до сих пор, но выглядят не так, как я хочу, чтобы они выглядели
4. итак, вот как это работает прямо сейчас, и все выглядит нормально: i.imgur.com/57irz4t.png . Но мне не нравится, что он выглядит таким темным (потому что в нем используется оригинальный цвет материала от 3ds max) и слишком блестящим. Итак, я подумал, что это можно решить, создав еще один материал для каждого «ребенка»
5. по-видимому, у меня есть массив из 2 материалов на каждом колесе: i.imgur.com/3OgfBFH.png . Может быть, это моя проблема? Как в таком случае применить фонг к каждому материалу? Нужно ли мне что-то конкретное?