Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.05.2012, 15:41
fifa_sibir вне форума Посмотреть профиль Отправить личное сообщение для fifa_sibir Найти все сообщения от fifa_sibir
  № 1  
Ответить с цитированием
fifa_sibir
 
Аватар для fifa_sibir

Регистрация: Apr 2011
Адрес: Новосибирск
Сообщений: 103
Отправить сообщение для fifa_sibir с помощью ICQ
По умолчанию Неполное отображение объекта

Здравствуйте, давно мучаюсь с одной проблемкой и чувствую без подсказки тут не обойтись.
Пытаюсь загрузить 3d-модель формата .dae на которую назначено несколько текстур, но при компилировании отображается только одна из всех, а остальные области модели становятся невидимыми.
Модель рисовала в 3d max и на каждую группу модели назначала свою определенную текстуру, т.е в моем случае это модель танка и колеса я обтягиваю одним изображение, а уже пушку например другим изображением, размер изображений как положено(1024х1024, 512х1024). При экспорте в .dae формат пути к изображениям в xml-файле прописаны правильно. В чем еще может быть загвоздка даже не знаю, очень нужна помощь..
ниже привожу код загрузки:

Код AS3:
 
var rootContainer:Object3D = new Object3D();
var camera:Camera3D;
var stage3D:Stage3D;
var mesh:Mesh; 
var simpleController:SimpleObjectController;
var tank:Mesh = new Mesh;
var loaderCollada:URLLoader = new URLLoader();
 
	loaderCollada.dataFormat = URLLoaderDataFormat.TEXT;
	loaderCollada.load(new URLRequest("tank.DAE"));
	loaderCollada.addEventListener(Event.COMPLETE, onColladaLoad);
 
	private function onColladaLoad(e:Event):void {  //когда модель загружена парсим ее
	var parser:ParserCollada = new ParserCollada();
	parser.parse(XML((e.target as URLLoader).data));
 
	for (var i:int = 0; i < parser.objects.length; i++) {
		mesh = parser.objects[i] as Mesh;
		if (mesh != null) {
		tank.addChild(mesh);
		rootContainer.addChild(tank);
	} }
	// загрузка текстур		
	var textures:Vector.<ExternalTextureResource> = new Vector.<ExternalTextureResource>();
	for (var i:int = 0; i < mesh.numSurfaces; i++) {
		var surface:Surface = mesh.getSurface(i);
		var material:ParserMaterial = surface.material as ParserMaterial;
		material.renderChannel = "diffuse";
		if (material != null) {
		var diffuse:TextureResource = material.textures["diffuse"];
		if (diffuse != null) {
		textures.push(diffuse);
		surface.material = new TextureMaterial(diffuse);
	}}}
 
var texturesLoader:TexturesLoader = new TexturesLoader(stage3D.context3D); 
texturesLoader.loadResources(textures);
PS: При заливке модели одним цветом, структура отображается полностью, т.е проблема не в каркасе модели


Последний раз редактировалось fifa_sibir; 09.05.2012 в 15:49.
Старый 09.05.2012, 16:10
redefy вне форума Посмотреть профиль Отправить личное сообщение для redefy Посетить домашнюю страницу redefy Найти все сообщения от redefy
  № 2  
Ответить с цитированием
redefy
 
Аватар для redefy

Регистрация: Mar 2011
Сообщений: 58
Конечно, в этом случае будет загружается только одна текстура, ведь вы собираете их только у последнего меша:
Цитата:
for (var i:int = 0; i < parser.objects.length; i++) {
mesh = parser.objects[i] as Mesh;
if (mesh != null) {
tank.addChild(mesh);
rootContainer.addChild(tank);
} }

for (var i:int = 0; i < mesh.numSurfaces; i++) {
var surface:Surface = mesh.getSurface(i);
Собирайте ссылки на текстуры у каждого меша, и все нормально будет визуализироваться..

Старый 09.05.2012, 17:37
fifa_sibir вне форума Посмотреть профиль Отправить личное сообщение для fifa_sibir Найти все сообщения от fifa_sibir
  № 3  
Ответить с цитированием
fifa_sibir
 
Аватар для fifa_sibir

Регистрация: Apr 2011
Адрес: Новосибирск
Сообщений: 103
Отправить сообщение для fifa_sibir с помощью ICQ
redefy, в очередной раз Вы меня избавляете от мук :-) Величайшее спасибо!! )

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:54.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.