AlternativaPlatform / Alternativa3D

Alternativa3D Flash GPU accelerated 3D engine
http://alternativaplatform.com/en/technologies/alternativa3d/
377 stars 126 forks source link

ExporterA3D doesn't export materials #19

Closed gonchar closed 11 years ago

gonchar commented 12 years ago

Оказалось, что ExporterA3D не умеет экспортировать обычный StandartMaterial в котором находится BitmapTextureResource.

private function exportMap(source:TextureResource, channel:int, dest:A3D2):int {
            if (source == null) return -1;
            var result:A3D2Map = mapsMap[source];
            if (result != null) return result.id;
            if (source is ExternalTextureResource) {
                var resource:ExternalTextureResource = source as ExternalTextureResource;
                result = new A3D2Map(channel, mapID, exportImage(resource, dest));
                if (dest.maps == null) dest.maps = new Vector.<A3D2Map>();
                dest.maps[mapID] = result;
                mapsMap[source] = result;

                return mapID++;
            }
            return -1;
        }

Почему только if (source is ExternalTextureResource) { ???????? Невероятно! Я бы сделал пуллреквест только у вас там бинарные библиотеки.

makc commented 12 years ago

lol ответ в 5 строчках ниже )

var result:A3D2Image = new A3D2Image(imageID, source.url);
gonchar commented 12 years ago

где там ответ? они просто внешнюю ссылку на ExternalTextureResource берут! Я хочу чтобы экспортер сразу же сохранял BitmapData из BitmapTextureResource.

gonchar commented 12 years ago

A3D2Image хранит только ID и url. И причем внутрь A3DImage bitmapData никак не положить.

makc commented 12 years ago

так отож - в ExternalTextureResource url есть, а с BitmapTextureResource что делать? разве что запилить поддержку http://en.wikipedia.org/wiki/Data_URI_scheme (кстати с этим вполне можно и в BitmapTextureResource пулл-реквест заслать)

Yaski commented 12 years ago

Было бы прикольно хранить картинку прямо в файле A3D. Но нужно решить вопрос в каком формате сохранять изображение в файле. BitmapData - это неупакованное изображение, а следовательно весит значительно больше чем PNG или JPG. Паковать при экспорте - будет очень затратно по времени.

gonchar commented 12 years ago

Это же экспортер, он может экспортировать хоть пол часа. Сделайте опцию, запоминать урлы или закачивать в себя. Пусть экспорт будет асинхронной операцией.

makc commented 12 years ago

Паковать при экспорте - будет очень затратно по времени

Alan Givati с тобой несогласен:

With the April 5 public Beta1 I saw a 34x speedup in debug mode for a [method](http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/display/BitmapData.html#encode(%29) that combined the two vs the pure AS3 implementation.

:smirk:

Но нужно решить вопрос в каком формате сохранять изображение в файле

зачем, пусть пользователь решает. сделайте где-нибудь параметр, где они смогут указать JPEGEncoderOptions, JPEGXREncoderOptions или PNGEncoderOptions.

gonchar commented 12 years ago

И еще, ExporterA3D имя материала не экспортит, алиж капец. И что вот мне теперь делать? Я оставлял хоть последний шанс, уже самому хотябы заэкспортить отдельно геометрию и отдельно материалы, а замапить я их уже не смогу назад. Сейчас придется фейк делать, временно мапить материалы хотябы по имени mesh.

makc commented 12 years ago

пихай в урл, серьёзно ) конечно, base64 добавит жирка, но меньше чем jpegxr съест

gonchar commented 12 years ago

да или так) ща буду пробовать, спасиб

gonchar commented 12 years ago

моделька 1мб стала весить 15мб)

makc commented 12 years ago

1мб с текстурами?

gonchar commented 12 years ago

да, в png формате

makc commented 12 years ago

это WTF какойто :no_mouth: а ты пробовал new FileReference().save (encoderResult, "test.jxr")? чтобы посмотреть, сколько выходит до упаковки в a3d формат?

Yaski commented 12 years ago

Там в A3D формате возможно какие-то экстра поля есть, но я не уверен, надо с Иваном будет посоветоваться.

vanRepin commented 12 years ago

зачем, пусть пользователь решает. сделайте где-нибудь параметр, где они смогут указать JPEGEncoderOptions, JPEGXREncoderOptions или PNGEncoderOptions.

Тогда этот параметр надо будет указывать для каждой текстуры.

моделька 1мб стала весить 15мб) <

В каком формате 1мб? анимация есть?

gonchar commented 12 years ago

В каком формате 1мб? анимация есть?

нене, не обращай внимание, это когда я в Base64 запихал текстурку к вам в урл))

gonchar commented 12 years ago

исправьте пожалуйста, очень нужно

vanRepin commented 12 years ago

В A3D нет имен материалов(нет такого поля). Единственный способ исправить - это дописывать формат, а это точно в ближайшее время сделано не будет.

gonchar commented 12 years ago

как нету если есть?

/**
 * Name of the material
 */
public var name:String;

https://github.com/AlternativaPlatform/Alternativa3D/blob/master/src/alternativa/engine3d/materials/Material.as

vanRepin commented 12 years ago

В формате A3D нет имен материалов http://alternativaplatform.com/public/A3DFormat_ru.pdf

gonchar commented 12 years ago

Странно, даже в OBJ есть есть имена материалов, которые описываются в MTL

makc commented 12 years ago

ну в а3д много чего нет, например там только один анимационный клип, хотя по формату может быть несколько, на другой пример там вообще говоря нету материалов - и это всё тыщу раз обсуждалось на форуме, но просто для танчиков не нужно ) Серёга как будто первый раз об этом слышишь