вторник, 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

Комментариев нет: