Четверг, 21 Ноября 2024, 16:11

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [132]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какой вид используется в ваших играх?
Всего ответов: 10346
Главная » Статьи » Создание игр

Основы PaperVision3D. Введение и создание шаблона
Всем привет, с вами снова noTformaT, и мы продолжаем изучать основы 3D движка «PaperVision3D». Прошлая статья была «первым знакомством с PaperVision3D», а в этой статье мы с вами детально рассмотрим элементы, по которым мы бегло пробежались в предыдущей статье, и создадим шаблон, который мы будем использовать с следующих статьях. В прошлой статье, как и в этой в качестве IDE будет использоваться FlashDevelop версии 3.3.4 (вместе с которым идет FLEX SDK), хотя любая другая версия (современная) должна подойти. Если что, то мой FlashDevelop выглядит примерно так:


Так же нам понадобится библиотека PaperVision3D, в прошлой статье я описывал, как ее скачать и в какую директорию копировать, вроде бы это была «D:\pv3d_tut».
Имея все это, мы можем приступить к дальнейшему изучению PaperVision3D, но вначале надо настроить проект. Создадим проект, делается это очень просто, на напели «Project» выбираем пункт «Create Project» или через меню FlashDevelop’a «Project->New Project».


Перед нами появится окно создания нового проекта. На панели «Installed Templates» выбираем тип проекта «AS3 Project». В поле «Name» указываем название, я назвал его «PV3D_Patern», так как мы сейчас делаем шаблон для наших будущих приложения, то название подходящее, а в поле «Location» указываем директорию в котором будет распологатся проект, в моем случае это «D:\pv3d_tut\tut_2», ну, а целом все выглядит так:


Далее жмем на кнопку «ОК» и наш проект создается. Теперь надо подключить к этому проекту библиотеку PaperVision3D, делается это просто, заходим в меню «Project->Properties», откроется окно настройки проекта, далее перейдем во вкладку «ClashPaths», и нажмем на кнопку «Add ClashPath», появится окно, в котором выберем местоположение библиотеки PaperVision3D. В моем случае это выглядит так:


На панели «Project» мы увидим, что в наш проект добавлена библиотека PaperVision3D со всеми нужными пакетами, так же нам понадобится класс Main.as, который лежит в папке проекта «src»:


Давайте откроем этот класс, и посмотрим из чего он состоит, в целом в нем должен быть следующий код:


В нем есть комментарий, по которому можно понять что «там мы будем писать код, который должен вызываться каждый кадр». Далее идет код рендеринга сцены, рендер сцены происходит с помощью метода renderScene, для этого надо иметь 4 компонента: сам движек который вызовет этот метод, камеру, сцену и поверхность на которую будем рендерить сцену. Вот и все, все эти компоненты есть. Осталось только добавить слушатель на событие «Event.ENTER_FRAME» в конце метода «init», после вызова метода инициализации PaperVision3D «InitPV3D». На всякий случай вот полный код метода «init»:


Все, нужный нам шаблон готов. Тут есть все что надо: инициализация нужных нам компонентов для работы с «PaperVision3D», и рендер сцены в каждом кадре. В итоге файл «Main.as» должен содержать следующий код:


И так, шаблон у нас готов, и теперь сохраняя нашу «проделанную работу» мы можем использовать этот шаблон в следующих проектах.
Сейчас мы возьмем написанный нами шаблон, и с помощью его попытаемся сделать новый проект. В следующем проекте мы просто добавим сферу на сцену, и будем ее вращать в каждом кадре. И так, приступим. Для начала сделаем дубликат папки, где хранится шаблон, и назовем эту папку «tut_3».


Зайдем в эту папку и откроем проект для FlashDevelop’a под названием «PV3D_Patern.as3proj». Как видно там ничего не изменилось, это все еще тот же шаблон что мы писали выше. Теперь опять откроем файл «Main.as» и опишем в этом классе следующее свойство:

Code
private var _sphere:Sphere;

Это примитивная сфера класса org.papervision3d.objects.primitives.Sphere, в следующей статье мы с вами рассмотрим все примитивные объекты, которые предоставляет PaperVision3D. Так же надо добавить импорт класса примитивной сферы:

Code
import org.papervision3d.objects.primitives.Sphere;

И так, теперь о том, зачем же нам нужна сфера. В этом примере я покажу, как добавляются объекты на сцену, а в качестве объекта буду использовать простую сферу. Все добавляемые объекты на сцену это объекты класса org.papervision3d.objects.DisplayObject3D, а вернее его наследники, примитивная сфера является наследником этого класса. Теперь нам надо инициализировать сферу и добавить ее на сцену, для этого весь этот код выведем в отдельный метод под названием «InitAndAddSpreheToScene», вот весь код этого метода:


Сейчас я объясню, что в нем да как, в первой строчке мы создаем объект Sphere, сейчас мы не будем разбирать все параметры конструктора Sphere, это мы сделаем в следующей статье, а сейчас мы всего лишь должны понимать, что создастся сфера, с материалом, который показывает сетку объекта, со случайным цветом, радиусом в 100 делений, и с 8 сегментами по вертикали и 6 сегментами по горизонтали, именно такие параметры по умолчанию у этого конструктора, но не будем об этом. Во второй строке, мы добавили сферу на сцену _scene через метод addChild(), так же мы добавляли камеру в прошлый раз. Вот и весь код метода «InitAndAddSpreheToScene». Теперь давайте добавим вызов этого метода в метод «init», сразу же после комментария

Code
//тут будут другие методы инициализации других данных

Если сейчас скомпилировать и запустить код, то мы увидим что-то наподобие этого:

Мы видим с вами сферу с теми параметрами, которые я описал выше. Ну, а теперь как я и обещал, сейчас мы заставим сферу крутится. Крутить сферу будет в слушателе «OnEnterFrameListener» события «Event.ENTER_FRAME», поэтому после комментария

Code
//тут будет код, который должен выполнится в каждом кадре

Вставляем следующий код:
Code
_sphere.localRotationY += 5;

Этот код увеличивает локальный угол поворота сферы по оси у. В «PaperVision3D» есть локальные и глобальные координаты, локальные зависят от объекта, в котором расположен объект, то есть сфера будет вращаться в сцене, об локальных и глобальных координатах мы с вами поговорим попозже.
Если сейчас запустить код проекта, то мы увидим как сфера вращается вогруг оси у.
Ну и весь код файла "Main.as":


Вот и все, в этой статье мы с вами написали шаблон в котором инициализируются все главные компоненты PaperVision3Dи использовали шаблон для создания проекта со сферой. Исходный код шаблона можно скачать тут, а исходный код проекта со сферой тут.
Если есть какие то вопросы по статье, то пишите их в комментариях к статье или мне в «Личные сообщений», так же можете зайти на мой блог,
Все, всем пока, с вами был noTformaT. Удачи.
Категория: Создание игр | Добавил: noTformaT (31 Июля 2011) | Автор: Евгений Карпенко
Просмотров: 9018 | Комментарии: 2 | Рейтинг: 5.0/2 |
Теги: Papervision3D, Уроки по PaperVision, ActionScript 3.0, Уроки по ActionScript3, ActionScript 3, Уроки по Flash, noTformaT, Flash 3D, Flash
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Основы PaperVision3D. Введение и создание шаблона», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 2
+0-
1 ezheka   (07 Сентября 2011 22:24) [Материал]
ezhekaОтлично. А производительность PaperVision не проверял? Стоит вообще с ним связываться?

+0-
2 noTformaT   (07 Сентября 2011 22:35) [Материал]
noTformaTВ наше время уже нет, Папервиден3д дал толчок современным http://www.away3d.com/ и http://www.flashsandy.org/ и альтернативе 3д. Сейчас уже 3д во флеше не такое, оно уже с поддержкой гпу, вот сегодня утром вышел релиз кандидат фп11, то есть уже через месяц будет релиз фп11, и про парервижен можно забыть.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Intersect Engine
  • Ultra Engine
  • Chocolate Doom
  • Pocket Platformer
  • Bipsi
  • Stencyl
  • Ursina
  • QCake
  • lifeEngine
  • Eclipse Wold
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг