У меня есть Collada и связанные с ними данные изображения, хранящиеся в многостраничном файле, который выводится из приложения. Мне нужно иметь возможность загружать объект Collada и изображения для отображения в Интернете через three.js. Может ли tr.js интерпретировать многостраничный файл или данные в файле, или это нужно разбирать в реальных файлах, так как пример загрузчика Collada показывает, что он ссылается на файл .dae (например, loader.load ('models/monster.dae '), а не фактические данные.Загрузить данные Collada/image, хранящиеся в многостраничном файле, в three.js
в любом случае, как бы я этого добиться? Конечная цель заключается в загрузке и посмотреть „окно“, представленного многотомных данных в файле.
Вот структура выборки многочастного файла я получаю от приложения:
MIME-Version:1.0
Content-Type:multipart/mixed;
boundary="----=_Part_4_153315749.1440434094461"
------=_Part_4_153315749.1440434094461
Content-Type: application/octet-stream; name=Texture_1.png
Content-ID: response-1
Content-Disposition: attachment; filename=Texture_1.png
‰PNG
"blob data here"
------=_Part_4_153315749.1440434094461
Content-Type: application/octet-stream; name=manifest.xml
Content-ID: response-2
Content-Disposition: attachment; filename=manifest.xml
<?xml version="1.0"?>
<dae_root>blank_3D.dae</dae_root>
------=_Part_4_153315749.1440434094461
Content-Type: application/octet-stream; name=texture_3D.dae
Content-ID: response-3
Content-Disposition: attachment; filename=texture_3D.dae
<xml data here... lots of xml data>
------=_Part_4_153315749.1440434094461
Content-Type: application/octet-stream; name=Texture_0.png
Content-ID: response-4
Content-Disposition: attachment; filename=Texture_0.png
‰PNG
"blob image data"
UPDATE:
Благодаря тому, что поставщик разделяет файлы, я могу загрузить файл collada непосредственно в программу просмотра ... но я не знаю, как получить изображения вместе с ним, загруженные в память или по-другому. Любые идеи о том, как включить изображения/текстуры, принадлежащие файлу collada? Вот мой текущий код загрузки:
// instantiate a loader
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('http://applicationvendorapi.com/dae', function (collada) {
box = collada.scene;
box.traverse(function (child) {
if (child instanceof THREE.SkinnedMesh) {
var animation = new THREE.Animation(child, child.geometry.animation);
animation.play();
}
});
box.scale.x = box.scale.y = box.scale.z = .2;
box.updateMatrix();
init();
animate();
});
расположение текстуры, как правило, в том же каталоге, что и файл Collada. Вот XML Collada. . Вопрос в том, можно ссылаться на них, потянув в других изображениях над веб-службы (ех/конечная точка/texture_0 и/конечная точка/texture_1
<library_images>
<image id="Texture_0_png">
<init_from>./Texture_0.png</init_from>
</image>
<image id="Texture_1_png">
<init_from>./Texture_1.png</init_from>
</image>
UPDATE 2:
Использование совет @gaitat, я пытаюсь загрузить текстуру сначала с помощью ImageUtils, но он никогда не вызывает вызов для текстуры/загрузки текстуры. Тем не менее, он все равно вызывает вызов объекта. объект, завернутый в вызов текстуры:
// Load texture before loading and initializing 3D object
var texture0 = THREE.ImageUtils.loadTexture('http://vendorwebservice/texture_0', {}, function loaded() {
// Instantiate a Collada loader
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('http://vendorwebservice/dae', function (collada) {
box = collada.scene;
box.traverse(function (child) {
if (child instanceof THREE.SkinnedMesh) {
var animation = new THREE.Animation(child, child.geometry.animation);
animation.play();
}
});
box.scale.x = box.scale.y = box.scale.z = .2;
box.updateMatrix();
init();
animate();
});
});
Вот где это становится интересным. Поскольку файл DAE, который я вытягиваю, имеет следующие ссылки xml для его текстур, он на самом деле пытается «получить» их, но конечная точка не существует с расширением .png, поэтому он не работает (например, http://vendorwebservice/texture_0.png):
<library_images>
<image id="Texture_0_png">
<init_from>./Texture_0.png</init_from>
</image>
<image id="Texture_1_png">
<init_from>./Texture_1.png</init_from>
</image>
Комментарии для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/88765/discussion-on-question-by-kode-load-collada-image-data-stored-in-a-multipart- фил). –