Я хочу добавить текстуру в свой obj-файл, но получаю сообщение об ошибке. Это мой код:
new THREE.MTLLoader()
.setPath( 'models/cool' )
.load( 'CobbleStones.mtl', function ( mat ) {
mat.preload();
var loader = new THREE.OBJLoader( loadingManager );
loader.load( 'models/cool.obj', function ( object ) {
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material = gemBackMaterial;
child.material = material;
loader.setMaterials(mat);
var second = child.clone();
second.material = gemFrontMaterial;
var parent = new THREE.Group();
parent.add( second );
parent.add( child );
scene.add( parent );
objects.push( parent );
}
} );
} );
});
Сообщение об ошибке:
GET http://localhost/alpha/Alpha/models/coolCobbleStones.mtl 404 (Not Found)
Я был бы очень благодарен, если бы кто-нибудь помог мне с моей проблемой.
gemFrontMaterial
и gemBackMaterial
не объявлены (возможно, возврат undefined)
предоставляется, хотя gemBackMaterial
назначается, а затем перезаписывается в следующей строке, поэтому это может не иметь большого значения.
Ваш путь неправильный. Вы устанавливаете его на:
models/coolCobbleStones.mtl
Но тебе нужно
models/cool/CobbleStones.mtl
Просто добавьте /
в .setPath( 'models/cool/' )
Здравствуйте, спасибо, я попробовал другой файл mtl, и ваше решение сработало, но в моем файле obj все еще нет текстуры, вы знаете, почему?
Трудно сказать по вашему образцу кода. Такое ощущение, что gemBackMaterial
, material
и gemFrontMaterial
появляются из ниоткуда. Я не знаю, где они объявляются, а параметр mat
, который передается во внешнюю функцию, не назначается ни одной сетке.
Здравствуйте, я работаю над чем-то вроде конфигуратора, и мне нужны gemBackMaterial и gemFrontMaterial, чтобы изменить цвет файла obj во время выполнения. А мат не назначается? Я думал, что loader.setMaterials (mat) достаточно, это то, что я видел в других примерах, знаете, что я могу там улучшить?
@Boby Да, похоже, вы звоните loader.setMaterials()
несколько раз, поскольку он запускается в цикле object.traverse()
. Я действительно не знаю, что еще вам сказать, поскольку все зависит от контекста, в котором работает ваш код, загружаемых ресурсов и т. д. Мой лучший совет - как можно точнее следовать примеру: github.com/mrdoob/three.js/blob/master/examples/… и как только вы Загрузите загрузчик и начните изменять его в соответствии со своими потребностями.
Пожалуйста, прочтите stackoverflow.com/help/mcve