Показаны сообщения с ярлыком пример. Показать все сообщения
Показаны сообщения с ярлыком пример. Показать все сообщения

вторник, 8 апреля 2008 г.

Papervision 3d: изменяем материал.

Теперь очередь дошла и до материала. Позволим себе несколько вольностей все с тем же самым, первым примером. Кроме ColorMaterial в ПВ имеется целый набор классов (загляните в ...\src\org\papervision3d\materials). В качестве примера возьмем, скажем, проволочный карскас из WireframeMaterial.
Переделки, которые потребуются в коде, выделены жирным:
public function ExampleTransformationRotate()
{
container = new Sprite;
container.x = 200;
container.y = 200;
addChild( container );
scene = new MovieScene3D( container );
camera = new Camera3D();
camera.z = -500;
camera.zoom = 5;
var material:WireframeMaterial = new WireframeMaterial();
material.doubleSided = true;
//material.fillColor = 0x00FF00;
//material.fillAlpha = 1.0;
plane = new Plane( material, 100, 100, 1, 1 );
scene.addChild( plane );
stage.addEventListener( Event.ENTER_FRAME, onEnterFrame );
}
Запустив переделанный пример, пронаблюдаем уже не полностью залитый квадрат, а его проволочное подобие с одной диагональю.

Довольно интересен movieAssetMaterial. Для того, чтобы пронаблюдать его в действии, придется создать в библиотеке специальный мувиклип.
Итак, создаем новый пустой мувиклип в библиотеке главного fla-файла. Назовем его myClip и сделаем настройку экспорта с тем же самым именем. Внутри него нарисуем квадратик со стороной 100 (такой же размер, как и размер летающего квадрата). Сделаем в нем простейшую анимацию. В моем случае, это светло-желтый круг, который в течение 50-и кадров увеличивается и уменьшается в размере.
Теперь видоизменим код, чтобы дать понять фильму, какой материал будет использован: public function ExampleTransformationRotate()
{
container = new Sprite;
container.x = 200;
container.y = 200;
addChild( container );
scene = new MovieScene3D( container );
camera = new Camera3D();
camera.z = -500;
camera.zoom = 5;
var material:MovieAssetMaterial = new MovieAssetMaterial("myClip", false);
material.doubleSided = true;
material.animated = true;
plane = new Plane( material, 100, 100, 1, 1 );
scene.addChild( plane );
stage.addEventListener( Event.ENTER_FRAME, onEnterFrame );
}

Я не освоилась еще с этим блогом, поэтому не пойму, как здесь выложить архив с примером. Опишу словами: летает квадратик, на который натянут ваш клип из библиотеки. При этом клип проигрывается. Примеры можно скачать с этой англоязычной странички: http://content.madvertices.com/articles/PV3DTraining/default.htm#I.

Допишу свой тернистый путь завтра. А пока - вот ссылки, по которым я копалась. http://wiki.papervision3d.org/index.php?title=Main_Page http://wiki.papervision3d.org/index.php?title=Examples http://www.madvertices.com/2008/01/papervision-3d-training-videos.html http://pv3d.org/2008/03/26/dynamic-parenting/ http://papervision2.com/ http://osflash.org/tutorials

Туториалс - http://www.webdesignermag.co.uk/tutorial_files.html

Papervision 3d: может, познакомимся?

В связи с тем, что я "провтыкала" уже несколько работ только потому, что не хотела связываться с данным инструментом, вот, назрела необходимость.
1) Откуда взять Papervision?
Лично я брала с googleCodes. Выкачала свн-ом почти 20 мб всякой всячины вот отсюда. И положила на диск С в каталог PaperVision.
2) И что делать со всем выкачанным добром?
Дальше нужно заставить Flash IDE увидеть установленные классы. Для этого нужно ее (Flash) запустить. Создать новый документ. Зайти в Edit->Preferences->ActionScript и там нажать на кнопочку ActionScript 3.0 Settings. В появившемся окошке следует добавить путь к скачанным классам. В моем случае C:\Papervision\googlecode\as3\trunk\src . Сиреневая часть пути зависит от того, куда вы сложите скачанный код. После этой прописи Flash начнет видеть ПВ.
3) Первый пример для Papervision.
Предлагается для ознакомления на http://wiki.papervision3d.org/. В разделе Using Papervision3D -> Tutorials. Это вращающаяся плоскость красного цвета.
Для того, чтобы его посмотреть, нужно сделать следующее:

  • Создать новый Flash документ и сохранить его куда-нибудь. Помните, что благодаря прописыванию путей к классам, наш пример теперь увидит все, что нужно.
  • Создайте as-файл и сохраните его туда же под именем ExampleTransformationRotate.as
  • Во вновь созданном документе на панели Properties в поле для ввода Document Class укажите ExampleTransformationRotate. Обратите внимание, что расширение файла здесь не указывается.
  • В as-файл вставьте код:


    package

    {

    import flash.display.Sprite;
    import flash.events.Event;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.objects.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.scenes.MovieScene3D;
    [SWF(width='400',height='400',backgroundColor='0x000000',frameRate='30')]
    public class ExampleTransformationRotate extends Sprite
    {
    private var container: Sprite;
    private var scene: MovieScene3D;
    private var camera: Camera3D;
    private var plane:Plane;
    public function ExampleTransformationRotate()
    {
    container = new Sprite;
    container.x = 200;
    container.y = 200;
    addChild( container );
    scene = new MovieScene3D( container );
    camera = new Camera3D();
    camera.z = -500; camera.zoom = 5;

    material:ColorMaterial = new ColorMaterial();
    material.doubleSided = true;
    material.fillColor = 0xFF0000;
    material.fillAlpha = 1.0;

    plane = new Plane( material, 128, 128, 1, 1 );
    scene.addChild( plane );
    stage.addEventListener( Event.ENTER_FRAME, onEnterFrame );
    }
    private function onEnterFrame( event: Event ): void
    {
    plane.rotationX += 4.35;
    plane.rotationY += 6.55;
    plane.rotationZ += 0.55;
    scene.renderCamera( camera );
    }
    }
    }
    • Сохраните as-файл.
    • Запустите свой fla-исходник.

    Крутится? Лично у меня получился вращающийся плоский красный квадратик. Правда, выкинулось в трейс cообщение:

    Papervision3D Beta RC1 (18.06.07)
    DisplayObject3D: null
    DisplayObject3D: null
    DisplayObject3D: null

    Оно осталось для меня загадкой.

    В общем, можно себя поздравить: хеллоу, ворлд, так сказать, сделан!