CAST II Game Engine Community

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Руководство по редактору Casted. Урок 1  (Read 1313 times)

0 Members and 1 Guest are viewing this topic.

admin

  • Administrator
  • Full Member
  • *****
  • Posts: 192
    • CAST II Engine
Re: Руководство по редактору Casted. Урок 1
« Reply #7 on: March 03, 2010, 09:54:49 AM »

как на счет: при открытии/создании сцены создается невидимый GUIRootItem, а в файл он не пишется


Так и делается для некоторых служебных объектов, но в случае именно с этим могут быть сложности.
Logged

Luarvic

  • Newbie
  • *
  • Posts: 33
Re: Руководство по редактору Casted. Урок 1
« Reply #6 on: March 03, 2010, 07:45:31 AM »

Quote
Думаю над тем, как правильно избавиться от этой зависимости в редакторе.

как на счет: при открытии/создании сцены создается невидимый GUIRootItem, а в файл он не пишется
Logged

admin

  • Administrator
  • Full Member
  • *****
  • Posts: 192
    • CAST II Engine
Re: Руководство по редактору Casted. Урок 1
« Reply #5 on: March 02, 2010, 01:45:26 PM »

Проблема в том что те самые рычаги не всегда видны, в сцене которую я делал их нет, а в сцене land они есть


Дело в том, что рычаги (манипуляторы объектов) являются GUI-элементов, поэтому появляются только при наличии в сцене TGUIRootItem.
Собственно эти самые 2DFitter и 3DFitter и есть манипуляторы для 2Д и 3Д объектов соответственно.
Думаю над тем, как правильно избавиться от этой зависимости в редакторе.

Quote
И тут редактор начал глючить: во первых создать кнопку мне не удалось (невидно даже рамки), во вторых после удаления TGUIRootItem с кнопкой внутри я добавил новый TGUIRootItem и в нем уже была кнопка. Вощем хотелось бы узнать порядок действий при создании кнопок и прочего


Вижу, с GUI в редакторе чего-то поломалось, некорректно рисует и обрабатывает сообщения мыши. Да и удалить TGUIRootItem не дает.
Хотя кнопка видна, если материал задать.

А вообще, порядок таков:
Создается TGUIRootItem, ему сразу включается галочка видимости (почему-то не сделал, чтобы по умолчанию включалось). Лучше создать отдельный материал для GUI без тумана, освещения и т.п..

Принцип таков, что текст (надписи то бишь) отдельно, а фон для этих надписей отдельно.
Вообще композиция используется чтобы получались более сложные/красивые контролы.

Для текста нужен шрифт, которые состоит из соответствующей текстуры (прописывается в материале), UV-маппинга (TUVMapResource) для этой текстуры и, опционально, маппинга символов (TCharMapResource), если в шрифте не 256 Ascii-символов.

Для создания текстуры шрифта и UV-маппинга к ней встроена тулза - Windows->Images->Create font.

Для фона тоже UV-маппинг может использоваться.
Редактировать UV-маппинг визуально тоже можно, открыв соотв. ресурс и картинку.

Подробнее напишу позже, когда поправлю GUI.
Logged

Luarvic

  • Newbie
  • *
  • Posts: 33
Re: Руководство по редактору Casted. Урок 1
« Reply #4 on: March 02, 2010, 06:59:53 AM »

Требуются разъяснения, вопросы в конце первого топика.
Logged

Luarvic

  • Newbie
  • *
  • Posts: 33
Re: Руководство по редактору Casted. Урок 1
« Reply #3 on: March 01, 2010, 05:56:19 AM »

Quote
Насчет мануала - я не отказываюсь, просто редактор меняется, да и много букв получается. Будет ли кто читать этот мануал?

Это просто ужасное заблуждение. Чай не по фотошопу сайт. Читать все равно придется когда до программирования дело дойдет. Вощем пока продолжу, а видео будет конечно кстати.
Logged

admin

  • Administrator
  • Full Member
  • *****
  • Posts: 192
    • CAST II Engine
Re: Руководство по редактору Casted. Урок 1
« Reply #2 on: February 28, 2010, 11:16:24 AM »

Вот спасибо!
А то у меня все как-то откладывается с мануалом - см. ниже.

Почему не видно:
При связывании THeightMap с картинкой он ругается в лог:
"a 8 bits per pixel image required"

Что означает, что карте высот требуется 8-ми битное изображение, в то время как по умолчанию создается 32-х битное.
Изображение можно сконвертировать, поменяв ему свойство "Format\Image". Например, на L8 (только не P8, т.к. это индексированный формат).
Теперь при попытке связывания продолжает ругаться, но уже так:
"an image with mipmaps enabled required"

Теперь ему мип-уровни требуются, кои по умолчанию выключены. Включаются они там же в свойствах изображения. Свойсто "Mip policy" имеет три возможных значения:
No mips - нету мипов.:)
Persistent - мип-уровни создаются при их включении и сохраняются в сцене. При желании, можно подставить свои мип-уровни.
Generated - мип-уровни рассчитываются при загрузке сцены, либо при изменении влияющих на мипы свойств. В сцене не сохраняются.

Алгоритм, рассчитывающий мип-уровни, задается свойством "Min filter" и по умолчанию установлен на оптимальный в большинстве случаев Lanczos.

После включения мипов связывание проходит молча, а значит, успешно.
По идее, THeightMap должен взять размеры (width/height) у картинки, но это не было реализовано (сейчас добавил).
Также свойства "CellWidthScale", "CellHeightScale", "DepthScale", задающие масштаб карты по трем измерениям, по умолчанию 0 (сейчас более вменяемо инициализируются). Надо их сделать 1, а DepthScale - 0.1.
Теперь, если подвигать и покрутить камеру, должно что-то рисоваться. Но черным цветом (текстуры на ландшафте и освещения-то нет) по черному же фону.:)
Цвет фона задает свойство "Clear\Color value" камеры.

Что можно упростить:
Перво-наперво редактор все время дорабатывается, поэтому уроки лучше писать по новейшей его версии, которую можно взять тут.
Там уже полная поддержка drag&drop ресурсов изображений, подсветка синтаксиса шейдеров и многое другое.

Во-вторых изображения проще создавать, перенеся файл из проводника в дерево объектов редактора. Новая версия поддерживает практически все форматы от .bmp до jpeg2000 (спасибо Vampyre Imaging).

В-третьих TLookatCamera удобнее, чем просто TCamera, т.к. крутится вокруг точки, куда смотрит.

В-четвертых Stage это стадия текстурирования - термин из DirectX. Современные видеокарты могут накладывать по 16 текстур за проход, а то и больше. Вот каждый stage задает текстуру, а также параметры её фильтрации, наложения и кое-чего еще.

В пятых - чтобы источники света применялись, надо корневому объекту свойство "Renderer\Simultaneous light sources" изменить на 8. Это максимальное количество влияющих на объект источников света. Почему-то по-умолчанию в 0 выставлялось (исправил).

То, что исправлено, в урок, наверное, добавлять незачем, т.к. в новых сценах с новым редактором значения по умолчанию правильные будут.

Насчет мануала - я не отказываюсь, просто редактор меняется, да и много букв получается. Будет ли кто читать этот мануал? :)

Поэкспериментировал немного с программой Wink - она позволяет делать видеоуроки на флеше. Похоже, что такие видеоуроки вкупе с пояснительным текстовым материалом будут куда эффективнее, чем просто текст.
Logged

Luarvic

  • Newbie
  • *
  • Posts: 33
Руководство по редактору Casted. Урок 1
« Reply #1 on: February 28, 2010, 02:10:01 AM »

Раз уважаемый Mirage категорически отказывается писать хоть какой-то мануал по редактору но при этом охотно отвечает на все вопросы, я придумал вот такую штуку. Писать уроки буду я. Даже при том что не до конца еще освоил основы редактора. Устроим что то вроде вики. Вопросы программирования затрагивать я не буду. Ну понеслась.
Итак, в первом уроке рассмотрим базовые инструменты редактора:
  • Создание ландшафта
  • Импорт моделей
  • Создание графического пользовательского интерфейса.

Создание ландшафта
Начнем с запуска редактора. Очищаем сцену (File>New).
Прежде всего добавляем камеру (Items>New). Находим в библиотеке классов TLookatCamera и 2 раза кликаем.


Меняем цвет фона камеры в настройках объекта.


Далее добавляем (предварительно выбрав CASTRootItem чтобы ландшафт был его наследником) THeightMapLandscape (в библиотеке раздел Mapped). Этот класс отвечает за визуализацию карты высот.

Добавляем карту высот (Maps>HeightMap) наследником HeightMapLandscape. HeightMap это двумерный массив, каждое число в котором обозначает высоту в точке ландшафта. Заполняется этот массив из bmp ресурса, тоесть изображения.

Добавляем картинку. Windows>Images жмем New image.  В окне Images в списке картинок жмем правой кнопкой на Image 0 и Create BMP resource. Закрываем окно редактора изображения и окно Images. Или если изображение высот во внешнем файле, то просто перетягиваем его из папки в список объектов. Так же не забываем сменить формат изображения (Format>Image в настройках объекта) с A8R8G8B8 на 8L (c 32 на 8 битный), и включить мипы (Mip policy там же)


Теперь осталось лишь создать материал для ландшафта. Для этого открываем окно создание материала (Windows>New material). Заполняем поля: первые 3 поля это имена собсно материала, одной из его техник, одного из его прохода рендеринга (механизм техник нужен для простого переключения между способами рисования и уровня детализации одного объекта, а проходы для усложнения одной техники когда например сначала рисуется сам объект, поверх него тот же объект но полупрозрачный с другими настройками, Stage# это стадия наложения текстуры, используется при мультитекстурирования). Пока нам понадобится одна техника и один проход. Ниже идут настройки для Stage, тип (настройки смешения), и текстура. Жмем кнопку Create.


Когда все объекты добавлены, их надо связать. Для этого : жмем правой кнопкой на ImageResource и Copy full name, вставляем путь и имя в HeightMap поле Image, делаем тоже самое с HeightMap и вставляем в HeightMapLandscape поле Map, далее наш материал вставляем в HeightMapLandscape поле Material.

Теперь осталось лишь добавить источник света в сцену и натянуть на ландшафт текстуру. TLight находится в вкладке Processing. С текстурой все просто: с помощью drag&drop перетягиваем текстуру в список объектов, после чего выделяем материал и открываем окно New material, в нем выбираем текстуру из списка текстур и жмем кнопку Modify.

Для редактирования высот ландшафта непосредственно в редакторе используется окно Map editor.



Добавление моделей
Добавить на сцену модель очень просто, писать даже особо нечего: перетаскиваем файл формата Wavefront (.obj) или DirectX (.x) в список объектов, открываем окно Mesh tools, вкладка Optimaze, проводим оптимизацию меша. Двигать меш можно с помощью соответственных "рычагов" на модели (пока появляются при условии что в списке объектов присутствует GUIRootItem - смотри Создание GUI). Квадраты отвечают за движение, круги - за поворот.

Так же в Mesh tools присутствуют некоторые возможности редактирования модели "на месте", такие как поворот, масштабирование, сдвигание (координаты, размеры и ориентация объекта TMesh остаются нетронутыми, меняется только положение вершин), пересчет, инвертирование нормалей и т.д.
Quote
Проблема в том что те самые рычаги не всегда видны, в сцене которую я делал их нет, а в сцене land они есть



Создание графического пользовательского интерфейса.
Начнем с добавления корневого объекта GUI (TGUIRootItem). Вместе с ним создаются 2 объекта: 2DFitter и 3DFitter назначение которых мне не ведомо.
Quote
И тут редактор начал глючить: во первых создать кнопку мне не удалось (невидно даже рамки), во вторых после удаления TGUIRootItem с кнопкой внутри я добавил новый TGUIRootItem и в нем уже была кнопка. Вощем хотелось бы узнать порядок действий при создании кнопок и прочего

« Last Edit: March 03, 2010, 07:43:34 AM by Luarvic »
Logged
 

+ Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:

Please enter the number 234 in the field: