Очень маленький 3D-рендеринг

Я пишу небольшой фрагмент кода для воспроизведения 3D-модели на основе этого сообщения: http://active.tutsplus.com/tutorials/3d/quick-tip-displaying-a-3d-model-with-papervision3d/

Я скачал бесплатный DAE-файл (car_shell_001.dae) и текстуру (vehicle_texture.jpg).

Я просто скопировал код из примера, изменив указатель файла на мои файлы. Вот код:

public class Tarini extends BasicView
    {
        [Embed(source="Assets/car_shell_001.dae", mimeType="application/octet-stream")]
        private var bikeModelClass:Class;

        [Embed(source="./Assets/vehicle_texture.jpg")]
        private var bikeTextureClass:Class;

        private var bikeModelDAE:DAE;

        public function Tarini() 
        {
            this.loaderInfo.addEventListener ( Event.COMPLETE, onFullyLoaded ) ;
        }

        private function onFullyLoaded(e:Event):void 
        {
                var bitmap:Bitmap = new bikeTextureClass ( ) ;

                var bitmapMaterial:BitmapMaterial = new BitmapMaterial ( bitmap.bitmapData ) ;

                var materialsList:MaterialsList = new MaterialsList ( ) ;
                materialsList.addMaterial ( bitmapMaterial, "all" ) ;

                var byteArray:ByteArray = new bikeModelClass ( ) ;

                bikeModelDAE = new DAE ( ) ;
                bikeModelDAE.load ( byteArray, materialsList ) ;

                this.scene.addChild ( bikeModelDAE ) ;

                this.camera.z = 500;

                this.startRendering ( ) ;
        }

    }

Это так просто, и мне это нравится. Я компилирую с помощью mxmlc, и у меня нет ошибок компиляции. Когда я открываю сгенерированный swf-файл, я получаю очень маленькое изображение в центре браузера.

В чем проблема? Мне нужно как-то форсировать размеры? Если вы думаете, что иметь файл dae и jpg будет полезно, скажите мне :)


person Community    schedule 10.02.2013    source источник
comment
Я использовал свойство масштабирования объекта _camera, и оно работает. Это правильное решение?   -  person    schedule 10.02.2013
comment
В опубликованном коде положение камеры по оси Z равно 500 и (предположительно) ваш 3D-объект находится в положении по оси 0 - так он маленький, потому что он далеко?   -  person    schedule 10.02.2013


Ответы (1)


Очень часто единицы измерения различаются между 3D-движком и 3D-редактором (на самом деле, только между редакторами вы можете заметить это: просто экспортируйте куб, например, из Blender и проверьте его в Sketchup / 3dsmax / и т. Д.)

Самое простое, что вы можете сделать, - это масштабировать модель после ее инициализации:

bikeModelDAE.scale = 10;//or any other value that works best for you

Другой допустимый вариант - поиграть с параметрами масштабирования / фокусировки камеры. Если у вас есть только модель для отображения, вы можете использовать любой метод (масштаб объекта, свойства камеры), но если у вас несколько моделей, вероятно, лучше убедиться, что вы используете одинаковый масштаб между моделями.

Немного не по теме, я полагаю, вы знаете, что Papervision не обновлялся с 2010 года. Я рекомендую попробовать движок, который все еще находится в разработке, например Away3D например.

person George Profenza    schedule 10.02.2013