Three.js- Как я могу изменить текстуру в файле collada в three.js?
У меня есть файл collada, который был экспортирован из Maya, и я хочу изменить его текстуру в three.js. После экспорта файла Maya в загрузчик для three.js текстура не появляется. Я подумал, что могу попытаться отобразить текстуру вручную с помощью three.js. Я могу использовать только файл collada, потому что obj слишком сложен для моего файла, а другие форматы неправильно импортируют мою модель.
Как я могу добавить текстуру поверх модели коллада? Как добавить градиентную текстуру в Three.js к той же модели? Я знаю, как я обычно добавляю текстуру в модель в three.js, но, похоже, произошла ошибка, или я должен сделать что-то другое при обработке файла.dae. Ниже я загрузил некоторый код.
<body>
<div id="container"></div>
</div>
<script src="https://threejs.org/build/three.js"></script>
<script src="https://threejs.org/examples/js/loaders/ColladaLoader2.js"></script>
<script src="https://threejs.org/examples/js/Detector.js"></script>
<script src="https://threejs.org/examples/js/libs/stats.min.js"></script>
<script>
if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
var container, stats, clock;
var camera, scene, renderer, elf;
init();
animate();
function init() {
container = document.getElementById( 'container' );
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.1, 2000 );
camera.position.set( 8, 10, 8 );
camera.lookAt( new THREE.Vector3( 0, 3, 0 ) );
scene = new THREE.Scene();
clock = new THREE.Clock();
// loading manager
var loadingManager = new THREE.LoadingManager( function() {
scene.add( elf );
} );
// collada
var loader = new THREE.ColladaLoader( loadingManager );
loader.options.convertUpAxis = true;
loader.load( 'modelMaya.dae', function ( collada ) {
elf = collada.scene;
var s=.3;
elf.scale.set(s,s,s);
var setMaterial = function(node, material) {
node.material = material;
if (node.children) {
for (var i = 0; i < node.children.length; i++) {
setMaterial(node.children[i], material);
}
}
}
var materialcollada = new THREE.MeshBasicMaterial({ color:0xD8C052});
var mesh= new THREE.Mesh(elf, materialcollada);
} );
//
var ambientLight = new THREE.AmbientLight( 0xcccccc, 0.4 );
scene.add( ambientLight );
var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.8 );
directionalLight.position.set( 1, 1, 0 ).normalize();
scene.add( directionalLight );
//
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio( window.devicePixelRatio );
renderer