dmc1989
@dmc1989

Почему текстура не применяется к модельке?

Загрузил .fbx модельку, но в ней установлено путь к текстурам по умолчанию (как я понял). Получаю вот такую ошибку:
HTTP504: GATEWAY TIMEOUT — таймаут запроса в ожидании шлюза.
GET — http://localhost:3000/assets/models/texLOD1_NRM.png

HTTP504: GATEWAY TIMEOUT — таймаут запроса в ожидании шлюза.
GET — http://localhost:3000/assets/models/texMain.png

HTTP504: GATEWAY TIMEOUT — таймаут запроса в ожидании шлюза.
GET — http://localhost:3000/assets/models/tex1.png

HTTP504: GATEWAY TIMEOUT — таймаут запроса в ожидании шлюза.
GET — http://localhost:3000/assets/models/texLOD1.png

HTTP504: GATEWAY TIMEOUT — таймаут запроса в ожидании шлюза.
GET — http://localhost:3000/assets/models/tex1_NRM.png

HTTP504: GATEWAY TIMEOUT — таймаут запроса в ожидании шлюза.
GET — http://localhost:3000/assets/models/texMain_NRM.png


Написал код по загрузке и замене текстур. Текстуры загружаются, но не применяются к модельке. В тайпскрипте пишет, что нету таких свойств как material.needsUpdate и material.map, но вот в простом js такое работает. Пришлось применить @ts-ignore.
/img/tex1_DSP.png
map-component.tsx (92,1)

/img/tex1.png
map-component.tsx (92,1)

/img/texLOD1.png
map-component.tsx (92,1)

/img/texMain_DSP.png
map-component.tsx (92,1)

/img/texMain.png
map-component.tsx (92,1)

/img/texMain_NRM.png
map-component.tsx (92,1)

load texture: /img/tex1_DSP.png 1 6
map-component.tsx (89,1)

load texture: /img/tex1.png 2 6
map-component.tsx (89,1)

load texture: /img/texMain_DSP.png 3 6
map-component.tsx (89,1)

load texture: /img/texMain.png 4 6
map-component.tsx (89,1)

load texture: /img/texMain_NRM.png 5 6
map-component.tsx (89,1)

load texture: /img/texLOD1.png 6 6


Как тогда применить текстуру к fbx? Других вариантов пока не нашел(
const manager = new LoadingManager();
    manager.onProgress = function (item, loaded, total) {
      console.log("load texture:", item, loaded, total);
    };
    manager.setURLModifier((url: string): string => {
      console.log(url);
      return url;
    });

    const textureLoader = new TextureLoader(manager);

    const vehicleTextureMain1: THREE.Texture = textureLoader.load('/img/tex1_DSP.png');
    const vehicleTextureMain2: THREE.Texture = textureLoader.load('/img/tex1.png');
    const vehicleTextureMain3: THREE.Texture = textureLoader.load('/img/texLOD1.png');
    const vehicleTextureMain4: THREE.Texture = textureLoader.load('/img/texMain_DSP.png');
    const vehicleTextureMain5: THREE.Texture = textureLoader.load('/img/texMain.png');
    const vehicleTextureMain6: THREE.Texture = textureLoader.load('/img/texMain_NRM.png');

    const loader = new FBXLoader();
    loader.load(
      'assets/models/tesla_ct_export1123.fbx',
      (model: any) => {
        model.traverse(function(child: THREE.Mesh) {
  	      // if ( child instanceof THREE.Mesh ) {
            console.log('texture');
            // @ts-ignore
  	        child.material.map = [
              vehicleTextureMain1,
              vehicleTextureMain2,
              vehicleTextureMain3,
              vehicleTextureMain4,
              vehicleTextureMain5,
              vehicleTextureMain6
            ];
            // @ts-ignore
            child.material.needsUpdate = true;
  	      // }
  	    });
        this.scene.add(model);
      }
    );
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
чтобы не писать @ts-ignore, надо чтобы были правильные типы. Если их никто не написал за вас - значит это нужно сделать самостоятельно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы