четверг, 17 апреля 2008 г.

Примитивы в Papervision

В предыдущих примерах мы рассмотрели различные материалы, натягиваемые на один и тот же графический примитив - плоскость. Оказывается, возможности этим далеко не ограничены.
Во-первых, все прообразы допустимых фигур находятся в org.papervision3d.objects. Поэтому нужно делать импорт : import org.papervision3d.objects.*.

Какие же существуют примитивы и как с ними общаться?

  • Уже знакомая нам плоскость Plane. останавливаться подробно на ней не буду, ее мы видели уже неоднократно.
  • Примитив сфера Sphere. Конструктор выглядит как new Sphere( material, 100, 8, 6). При этом первым параметром в него передается радиус сферы. Следующие два параметра определяют количество полигонов, из которых собирается сфера, по горизонтали и вертикали. Чем больше эти числа, тем более "гладкой" будет поверхность сферы.
  • Примитив куба Cube. Для него существует определенная специфика. Во-первых, вместо одного материала, для него указывается целый список, персонально для каждой грани. Например, у вас есть два материала. Material - оставшийся с прошлого раза портрет кота, material1 - просто проволочный каркас. И вы хотите сделать куб из фотографий кота, но одна сторона этого куба будет представлять собой проволочку, чтобы можно было заглянуть внутрь куба. Тогда:
    var material1:WireframeMaterial = new WireframeMaterial(0xFF0000);
    var material:BitmapFileMaterial = new BitmapFileMaterial("texture.jpg");
    material.doubleSided = true;
    material.smooth = true;
    var materiallist:MaterialsList = new MaterialsList();
    materiallist.addMaterial(material1,"top");
    materiallist.addMaterial(material,"bottom");
    materiallist.addMaterial(material,"front");
    materiallist.addMaterial(material,"back");
    materiallist.addMaterial(material,"left");
    materiallist.addMaterial(material,"right");

    И для создания самого примитива нужно вызывать конструктор new Cube( materiallist, width, depth, height, a, b, c). width, depth, height - это переменные, отвечающие соответственно за ширину, глубину и высоту куба. А a, b, c - это, как и в предыдущем случае, параметры, регулирующие количество примитивов. Попробуйте установить любой фигуре полностью проволочный каркас и поизменять эти параметры. Сразу станет ясно, какова их роль.
  • Цилиндр Cylinder. Для создания его нужно вызвать new Cylinder( material, radius, height, a, b). Radius - радиус донца цилиндра, heigth - высота фигуры, a и b - уже знакомые регуляторы числа полигонов.

На сегодняшний день это все, что мне известно о графических примитивах в ПВ. Или, по крайней мере, то, что у меня работает :)

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