Пятница, 19 Апреля 2024, 08:50

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум игроделов » Записи участника » pekar [93]
Результаты поиска
pekarДата: Суббота, 11 Сентября 2010, 20:55 | Сообщение # 61 | Тема: Русская Wiki о UDK
почетный гость
Сейчас нет на сайте
Дело в том, что wiki пока как эксперимент и к ее двигу нужно привыкнуть.

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Суббота, 11 Сентября 2010, 16:46 | Сообщение # 62 | Тема: ХОРОШАЯ ОБУЧАЮЩАЯ ПРОГРАММА ПО С++
почетный гость
Сейчас нет на сайте
Это не просто сборник видео, а обучающая программа, посмотрите сначала, а потом уже коментарии пишите. А от книг я не кого не отговариваю-- видео тоже полезны когда они не просто юзером сделаны а профи. Я долго искал что то подобное.

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Суббота, 11 Сентября 2010, 12:29 | Сообщение # 63 | Тема: ХОРОШАЯ ОБУЧАЮЩАЯ ПРОГРАММА ПО С++
почетный гость
Сейчас нет на сайте
ВСЕМ КТО ХОЧЕТ ИЗУЧИТЬ С++ И НАДОЕЛО ЧИТАТЬ КНИГИ,
ISO ОБРАЗ ДИСКА С ВИДЕО КУРСОМ ПО С++ на русском.

Данный мультимедийный самоучитель предназначен для изучения языка программирования Visual C++ , который является на сегодняшний день самым распространенным языком программирования,а также среды программирования Studio Net,которая позволяет в полной мере реализовать все достоинства разработки приложений на Visual C++.
Курс состоит из 216 уроков.Общая продолжительность озвученных уроков-29 часов.Количество контрольных вопросов-5707.Количество ключевых поисковых терминов-более 500.
Материал рассчитан как для начинающих,так и для тех,кто уже владеет основными навыками программирования на Visual C++ и стремится к достижению профессиональных результатов в своей работе.

ВНИМАЕНИЕ ПАРОЛЬ К АРХИВУ - hacker-pro.net
РАЗМЕР КАЖДОГО АРХИВА 40МБ
http://uploading.com/files/1m8a367b/TP_VISUAL_C.part01.rar/
http://uploading.com/files/de3c5899/TP_VISUAL_C.part02.rar/
http://uploading.com/files/5199b48e/TP_VISUAL_C.part03.rar/
http://uploading.com/files/5a294e2e/TP_VISUAL_C.part04.rar/
http://uploading.com/files/64am9576/TP_VISUAL_C.part05.rar/
http://uploading.com/files/1bb4942e/TP_VISUAL_C.part06.rar/
http://uploading.com/files/mabd55mc/TP_VISUAL_C.part07.rar/
http://uploading.com/files/2d131m1m/TP_VISUAL_C.part08.rar/
http://uploading.com/files/258c75ab/TP_VISUAL_C.part09.rar/
http://uploading.com/files/6295b58a/TP_VISUAL_C.part10.rar/
http://uploading.com/files/5m9cd79m/TP_VISUAL_C.part11.rar/
http://uploading.com/files/3f429m9a/TP_VISUAL_C.part12.rar/


Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р


Сообщение отредактировал pekar - Суббота, 11 Сентября 2010, 16:56
pekarДата: Пятница, 10 Сентября 2010, 23:44 | Сообщение # 64 | Тема: Русская Wiki о UDK
почетный гость
Сейчас нет на сайте
Вы о чем Wiki. Я недавно ее разместил у себя на сайте, да и сейчас я занят переводом мануала по движку Shiva. Так как решил узать пока ее, да и скоро думаю купить лицензию на этот двиг. Как будет время начну переводить, просто мне не когда. Да и меня интересует только унреал скрипт, так что я все статьи точно по нему переводить буду. И не транслитом.

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р


Сообщение отредактировал pekar - Суббота, 11 Сентября 2010, 20:56
pekarДата: Понедельник, 23 Августа 2010, 18:51 | Сообщение # 65 | Тема: Русская Wiki о UDK
почетный гость
Сейчас нет на сайте
Фаны UDK предлагаю развивать русcкое сообщество о UDK.
http://udk.net.ru/ -молодой сайт о UDK
---------------------------------------------------------------------------
http://udk.net.ru/wiki/ -Wiki о UDK где планируется переводить на русский оф. док. по UDK

Переведено
http://udk.net.ru/wiki/doku.php?id=masteringunrealscriptclasses
http://udk.net.ru/wiki/doku.php?id=masteringunrealscriptfunctions

Все у кого есть переводы оф. документации выкладывайте или свяжитесь со мной


Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р


Сообщение отредактировал pekar - Пятница, 10 Сентября 2010, 23:48
pekarДата: Воскресенье, 01 Августа 2010, 18:28 | Сообщение # 66 | Тема: Udk.net.ru
почетный гость
Сейчас нет на сайте
Теперь мой сайт udk.hs5.ru сменил хостинг и переехал на udk.net.ru
Для зарегистрированых ползователей есть возможность скачать торрент архив уроков Ogasoda.

Добавлено (01.08.2010, 18:28)
---------------------------------------------
Скоро появится Wiki где будет переводится оф. документация


Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р


Сообщение отредактировал pekar - Четверг, 01 Июля 2010, 15:09
pekarДата: Вторник, 13 Июля 2010, 21:43 | Сообщение # 67 | Тема: Nebula Device 2(3)
почетный гость
Сейчас нет на сайте
DarkWind, ты смог разобратся

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Пятница, 09 Июля 2010, 18:35 | Сообщение # 68 | Тема: Каким хостингом пользуемся?
почетный гость
Сейчас нет на сайте
Платным
Самый лучший платный хостинг который я знаю это nevohosting вот ссылка nevohosting


Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Пятница, 02 Июля 2010, 19:09 | Сообщение # 69 | Тема: Издательство игры сделанной в UDK
почетный гость
Сейчас нет на сайте
Допустим игра уровня Silent Hill Homecoming

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Пятница, 02 Июля 2010, 18:30 | Сообщение # 70 | Тема: Издательство игры сделанной в UDK
почетный гость
Сейчас нет на сайте
Меня интересует вопрос будет ли какой-нибудть издатель издавать игру с условиями лицензии UDK или им полностью не выгодно этого делать.Ведь 25% свыше 5000$ не мало

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Пятница, 02 Июля 2010, 03:06 | Сообщение # 71 | Тема: А можно?
почетный гость
Сейчас нет на сайте
http://uploading.com/files/76m2beef/PDF%2Blessons.rar/ вот сборник туторов

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Понедельник, 21 Июня 2010, 12:30 | Сообщение # 72 | Тема: G3D Engine
почетный гость
Сейчас нет на сайте
Прошу в этой теме выкладывать все что нашли по этому движку и все кто с ним работает планируется создание русского компьюнити но инфы мала прошу людей откликнутся или связатся по аське 550632194

Добавлено (21.06.2010, 12:30)
---------------------------------------------
Взято с WIKI
На данной странице я попытаюсь систематизировать свои познания о G3D на русском языке. По возможности, я постараюсь писать развернуто. Т.е. не сухой перевод документации по всем классам, их методам и переменным, а как можно более подробно... с объяснениями и примерами.

Если не указано обратного, то все классы находятся в пространстве имен G3D, т.е. нет необходимости каждый раз указывать"using namespace G3D". Вся документация относится к движку версии 8.00 BETA 4 (на момент написания этих строк).

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

G3D имеет встроенный сборщик мусора, который для управления памятью, использует подсчет количества указателей на объект. Большинство классов G3D управляются сборщиком мусора. Для того чтобы создать объект, который будет автоматически управлять памятью, необходимо объявить класс с окончанием "Ref" в конце имени класса или же использовать собственный производный класс от родительского. Общий вид объявления выглядит так:

Code
typedef G3D::ReferenceCountedPointer<Foo> FooRef;
, где Foo - имя класса.

Ниже показан пример создания указателя на объект, хранящий изображение:
Code
Texture::Ref map_texture = G3D::Texture::fromFile("apple.jpg");

Как видите, память для таких объектов выделяется специальными методами вместо использования new(), malloc(), а указатель на объект хранится в Ref (G3D::Texture::Ref вместо G3D::Texture*). В примере выше метод G3D::Texture::fromFile создает объект типа Texture::Ref. Класс Texture::Ref это класс Texture, унаследованный от ReferenceCountedPointer. В дальнейшем вы можете использовать Ref как самый обычный указатель, доступ к членам осуществляется при помощи -> (стрелка).

Объекты, унаследованные от ReferenceCountedPointer автоматически управляют количеством указателей на них. Когда число указателей становится равным 0, память, выделенная для хранения объекта, автоматически очищается.

Запомните! Если класс имеет наследника Ref, вы никогда не должны использовать непосредственно родительский класс, используйте Ref. Ну и естественно, что вы не должны вручную очищать выделенную для них память при помощи free() или delete. G3D возьмет эту заботу на себя. В закреплении выше сказанного предлагаю разобрать следующий пример:

Code
1  class Foo : public G3D::ReferenceCountedObject {
2  public:
3    int x;
4  };
5       
6  class Bar : public Foo {};      
7  typedef G3D::ReferenceCountedPointer<Foo> FooRef;
8  typedef G3D::WeakReferenceCountedPointer<Foo> WeakFooRef;
9  typedef G3D::ReferenceCountedPointer<Bar> BarRef;
10       
11 int main(int argc, char *argv[]) {
12    WeakFooRef x;
13    {
14       FooRef a = new Foo();   //количество ссылок на класс FooRef равно 1
15       x = a;                  //объект типа weak не увеличивает значение счетчика (тип данных не совпадает)
16       {
17          FooRef b = a;        //количество ссылок на класс FooRef теперь равно 2
18       }                       //количество ссылок на класс FooRef снова равно 1 (объект "b" уничтожился по достижению конца блока)
19    }                          //А теперь и объект "a" уничтожился, количество ссылок равно 0
20      
21    return 0;      
22 }

Пример довольно примитивный, но позволяет понять логику работы. Разберем подробно что в нем происходит.

Создается класс Foo, наследующий открытые методы класс ReferenceCountedObject. Теперь, если создать объект типа ReferenceCountedPointer<Foo> (в ReferenceCountedPointer<> можно включать только те классы, которые наследуются от ReferenceCountedObject), то такой объект перейдет под управление сборщика мусора, т.е. станет "garbage collected". Согласитесь, немного неудобно каждый раз писать такой длинный идентификатор, именно поэтому 7-9 строки определяют пользовательское имя (псевдоним) для этого определения.

Вы обратили внимание, что в этом примере ни разу не вызывается метод delete() для освобождения памяти? Если бы класс Foo не наследовал ReferenceCountedObject, то в строке 19 память бы автоматически не очищалась. Т.е. уничтожиться то объект - уничтожился бы, но выделенная для его хранения память так и осталась бы занятой. А представь что будет если активно создаются и уничтожаются тысячи объектов. Свободная оперативка быстро закончится. Но поскольку Foo наследует ReferenceCountedObject, нам не нужно беспокоится о том, что мы забыли освободить память, когда объект стал более не нужен. В строке 19 это происходит автоматически. Contents [hide]
1 класс GApp
2 класс RenderDevice
3 класс Film
4 класс Material
5 класс ArticulatedModel
6 класс ArticulatedModel::Preproccess
7 класс BumpMap
8 класс SuperShader
9 класс _BSPMap::Map

класс GApp

Этот класс является каркасом (анг. framework), который управляет всеми событиями, происходящими в G3D и связывает все компоненты воедино. Его основные задачи:
Рендеринг кадров
Реакция на нажатие клавиш
Логика (предусмотрен специальный метод)
Физика (метод, вызывающий методы из физического движка)

У данного класса очень много методов, дружественных функций и параметров. Опишу основные из них

GApp::GApp(const Settings &options = Settings(), OSWindow *window = NULL)

Конструктор. По традиции в C++, конструктор используется для инициализации объекта. Так и здесь GApp() подготавливает приложение к запуску. Конструктор создает объект RenderDevice, UserInput, GConsole, FirstPersonManipulator и т.д. Обо всех этих классах я расскажу чуть позже, сейчас лишь стоит вкратце упомянуть что за что отвечает.

Итак, RenderDevice - это класс, через который происходит непосредственное взаимодействие с графическим чипсетом. Ну и соответственно с функциями OpenGL.

UserInput - класс, через методы которого обрабатывается пользовательский ввод.

GConsole - консоль для ввода команд. Тут стоит отметить, что поскольку объект типа GConsole создается в конструкторе, ему присваивается идентификатор console, то в принципе нет необходимости создавать свой собственный экземпляр... разве что вы захотите переопределить ее методы с помощью виртуальных функций.

FirstPersonManipulator - класс, отвечающий за работу мыши, джойстика, клавиатуры и т.д. В конструкторе создается объект этого класса с именем defaultController. В дальнейшем этот объект используется для управления положением камеры и направлением ее взгляда.

Это далеко не полный список объектов, создаваемых конструктором, но минимальный набор, необходимый что создать простое приложение.

Если посмотреть заголовочный файл GApp.h (G3D/GLG3D.lib/include/GLG3D/GApp.h), то вы увидите, что внутри класса GApp создаются еще два класса:

- GApp::Settings;

- GApp::DebugShape.

А внутри GApp::Settings создается класс GApp::Settings::FilmSettings.

Класс Settings служит для настройки приложения во время инициализации (разрешение экрана в пикселях, использовать ли полноэкранный режим, создавать ли файл с лицензией и т.д.). Так же внутри этого класса объявляется класс FilmSettings, а затем создается объект этого класса с именем film. Через методы этого класса осуществляется работа с буффером кадров (FrameBuffer).

После того как все параметры приложения заданы, можно передавать их в конструктор.

Пример:

Code

//Объявляем класс App, который наследует класс GApp
class App : public GApp {
private:
         ...
         void message(const std::string& msg) const;
         void renderSplash();
         ...
public:
         //Переопределяем родительские методы на свои собственные
         App(const GApp::Settings& settings = GApp::Settings());
         virtual void onUserInput(UserInput* ui);
         virtual void onSimulation(RealTime rdt, SimTime sdt, SimTime idt);
         virtual void onPose(Array<Surface::Ref>& posed3D, Array<Surface2D::Ref>& posed2D);
         virtual void onGraphics2D(RenderDevice* rd, Array<Surface2D::Ref>& posed2D);
         virtual void onGraphics3D(RenderDevice* rd, Array<Surface::Ref>& posed3D);
};

int main(int argc, char* argv[])
{
         GApp::Settings settings; //Здесь будут определяться параметры, которые затем будут переданы
                        //в конструктор App() для инициализации

         settings.film.enabled = true; //Используем FrameBuffer
         settings.window.caption = "LOKI"; //Заголовок окна
         settings.window.width = 800; //Разрешение по горизонтали
         settings.window.height = 600; //Разрешение по вертикали
         settings.window.fullScreen = false; //Не используем полноэкранный режим
         settings.window.framed = false; //Отключаем заголовок окна
         settings.window.asynchronous = false; //Используем синхронный режим обработки кадров
         settings.useDeveloperTools = true;
         settings.writeLicenseFile = false; //Не создавать файл лицензии
         settings.dataDir = "/home/vit/roengine/data/"; //Здесь лежат файлы с текстурами, моделями и т.д.

         App application(settings);  //Передаем settings в конструктор
         return application.run();   //Запускаем бесконечный цикл
}

Последние две строки можно заменить одной: "return App(settings).run();"

Тут может возникнуть резонный вопрос: для чего создавать App и делать его потомком GApp, почему бы просто не использовать базовый GApp? Ответ станет понятен из небольшого объяснения далее.

GApp не содержит конкретных реализаций методов обработки кадров, рендеринга моделей, теней, света, обработки нажатия клавиш и т.д. Он лишь предоставляет Вам интерфейс (API) для ваших собственных реализаций этих методов. Т.е. если бы это все в нем было бы заранее "прошито", то вы могли бы использовать это только в той форме, в которой оно было скомпилировано в бинарник и никак иначе. Выход был бы только один: написать свой собственный GApp. Вместо этого Морган сделал весьма красивое решение: создал базовый класс GApp, который содержит только логику, но не конкретную реализацию. Вам же лишь остается унаследовать от GApp необходимые методы и с помощью виртуальных функций переопределить их, описав в них уже конкретную реализацию ваших функций. Таким образом, создание объекта класса, наследующего открытые методы GApp, является практически обязательным. Кроме случаев, когда вы пишете полностью свой фреймворк, естественно.

void GApp::onPose(Array< Surface::Ref > &posed3D, Array< Surface2D::Ref > &posed2D)

У каждой модели в G3D есть параметр типа G3D::Surface. Surface это некое абстрактное понятие, которое описывает состояние модели на текущий момент (геометрия, положение, материал и т.д.). Сам Морган называет это snapshot (снимок), что весьма точно отражает смысл. Именно этот самый "снимок" и рендерится в кадре. ArticulatedModel::pose() заставляет объект скинуть свой "снимок" в заданный контейнер, откуда он позже может быть отрендерен в GApp::onGraphics3D() или в своей собственной функции.

Пример:

Code

//Создаем указатель на модель и загружаем ее из файла
ArticulatedModel::Ref model = ArticulatedModel::fromFile("data/3ds/superman.3ds");

void App::onPose(Array<Surface::Ref>& posed3D)
{
//Скидываем "снимок" модели в posed3D
         model->pose(posed3D);
}

void App::onGraphics3D(RenderDevice *rd, Array<Surface::Ref>& posed3D)
{
         ...
//Рендерим posed3D в кадр
         Surface::sortAndRender(rd, defaultCamera, posed3D, lighting,...);
         ...
}

Однако помимо скидывания своего "снимка" в методе pose(), можно еще и скидывать свои координаты в пространстве. Метод ArticulatedModel::pose(Surface::Ref &surface3D) является перегруженной функцией. Помимо указанной есть еще одна его форма: ArticulatedModel::pose(Surface::Ref &surface3D, CoordinateFrame cframe).

CoordinateFrame это ничто иное как матрица размерностью 4x4 (четвертая строка в ней всегда равна [0 0 0 1], поэтому она не хранится). cframe в данной функции хранит положение объекта в пространстве. Таким образом получив это значение в pose() мы можем перемещать объект. Давайте попробуем "посадить" камеру в кабину космического корабля.

Пример:

Code

//Создаем указатель на модель и загружаем ее из файла
ArticulatedModel::Ref model = ArticulatedModel::fromFile("data/3ds/spaceship.3ds");

//Здесь будет сохраняться положение корабля
CoordinateFrame cframe;

void App::onPose(Array<Surface::Ref>& posed3D)
{
//Скидываем "снимок" модели в posed3D, а положение в пространстве в cframe
         model->pose(posed3D, cframe);
}

//Привязываем камеру к cframe
void App::onSimulation(RealTime rdt, SimTime sdt, SimTime idt)
{
         defaultCamera.getCoordinateFrame(cframe);
}

void App::onGraphics3D(RenderDevice *rd, Array<Surface::Ref>& posed3D)
{
         ...
//Рендерим posed3D в кадр
         Surface::sortAndRender(rd, defaultCamera, posed3D, lighting,...);
         ...
}

void GApp::onGraphics(RenderDevice *rd, Array< Surface::Ref > &surface, Array< Surface2D::Ref > &surface2D)

Данный метод реализует покадровый рендеринг изображения. Метод вызывается автоматически. Если вы когда-нибудь работали с "голым" OpenGL и библиотекой glut, то этот метод отдаленно можно сравнить с вызовом glutMainLoop().
класс RenderDevice

Абстрактный интерфейс вывода. Т.е. через методы этого класса осуществляется взаимодействие с функциями OpenGL.

void setColorClearValue (const Color4 &c)

Метод, который устанавливает каким цветом будет отчищаться кадр. Данный метод это обычный вызов в OpenGL glClearColor();

void clear(bool clearColor, bool clearDepth, bool clearStencil);

Метод, который очищает кадр, обрабатываемый рендером. Перегруженный метод, имеет две формы:

Code
void clear();
void clear(bool clearColor, bool clearDepth, bool clearStencil);

Первый это краткая запись второго с установленными в значение истина тремя аргументами. Метод практически всегда является обязательным - без него текущий кадр будет накладываться на предыдущий.

Данный метод это обычный вызов в OpenGL glClear();

swapBuffers()

Принудительно поменять местами задний (где происходит рендеринг) и передний буфер (то, что мы в данный момент видим).

push2D() и pop2D()

Первый метод перевод рендер в систему 2D-координат, второй возвращает в обычное состояние. Обязательно используются в паре. По историческим причинам так сложилось, что двухмерной системе координат точки (0, 0) это верхний левый угол экрана или изображения. Абсцисса (ось X) увеличивается вправо, ордината (ось Y) вниз. Режим 2D-координат это идеальное место чтобы нарисовать прицел, главное меню или любое другое двухмерное изображение.

Попробуем изобразить заставку в момент начальной загрузки игры.

Code
void App::renderSplash() {
      Texture::Ref splash;
      Texture::Settings settings;
      settings.wrapMode = WrapMode::CLAMP;
      splash = Texture::fromFile("data/splash.jpg", ImageFormat::AUTO(), Texture::DIM_2D, settings);

      /*Очищаем экран от предыдущих кадров*/
      renderDevice->clear();

      /*Переводим устройство вывода в режим 2D-координат*/
      renderDevice->push2D();

      renderDevice->setTexture(0, splash);
      renderDevice->setBlendFunc(RenderDevice::BLEND_SRC_ALPHA,
        RenderDevice::BLEND_ONE_MINUS_SRC_ALPHA);
        Draw::rect2D(
          Rect2D::xywh(renderDevice->width()/2 - 400, 0, 800, 1200),      
            renderDevice, Color4(1,1,1,0.7f)
        );

      debugFont->draw2D(renderDevice, "Starting game...", renderDevice->viewport().center(), 24,      
         Color3::white(), Color4::clear(), GFont::XALIGN_CENTER, GFont::YALIGN_BOTTOM);

      /*Возвращаем устройство вывода в стандартный режим*/
      renderDevice->pop2D();

      /*Меняем местами передний и задний буфер*/
      renderDevice->swapBuffers();

      /*Показываем изображение в течении 3 секунд*/
      System::sleep(3);
}

Необходимость принудительно менять местами буферы в предпоследней строке продиктована тем, что функция рисования заставки вызывается вне контекста блоков beginFrame() и endFrame() (о них ниже) и поэтому мы должны самостоятельно озаботиться тем, что бы изображение появилось на экране. Вы же, надеюсь, помните что в заднем буфере происходит рендеринг, а в переднем выводится изображение.

beginOpenGL() и endOpenGL()

Методы вызываются без аргументов и используются обязательно в паре. Первый метод переводит рендер в режим "голого" OpenGL, при котором становится возможно оперировать функциями и типами данных OpenGL напрямую (устанавливает значение переменной RenderDevice::m_inRawOpenGL в истину). Второй метод возвращает рендер в стандартный режим (переводит RenderDevice::m_inRawOpenGL в ложь).

Давайте попробуем построить куб с помощью стандартых функций OpenGL, используя RenderDevice.

Code
rd->beginOpenGL();
      glBegin ( GL_QUADS );
       glVertex3f ( 1.0f, 1.0f, 2.0f );
       glVertex3f ( 2.0f, 1.0f, 2.0f );
       glVertex3f ( 2.0f, 2.0f, 2.0f );
       glVertex3f ( 1.0f, 2.0f, 2.0f );

       glVertex3f ( 2.0f, 1.0f, 1.0f );
       glVertex3f ( 1.0f, 1.0f, 1.0f );
       glVertex3f ( 1.0f, 2.0f, 1.0f );
       glVertex3f ( 2.0f, 2.0f, 1.0f );

       glVertex3f ( 1.0f, 1.0f, 1.0f );
       glVertex3f ( 1.0f, 1.0f, 2.0f );
       glVertex3f ( 1.0f, 2.0f, 2.0f );
       glVertex3f ( 1.0f, 2.0f, 1.0f );

       glVertex3f ( 2.0f, 1.0f, 2.0f );
       glVertex3f ( 2.0f, 1.0f, 1.0f );
       glVertex3f ( 2.0f, 2.0f, 1.0f );
       glVertex3f ( 2.0f, 2.0f, 2.0f );

       glVertex3f ( 1.0f, 2.0f, 2.0f );
       glVertex3f ( 2.0f, 2.0f, 2.0f );
       glVertex3f ( 2.0f, 2.0f, 1.0f );
       glVertex3f ( 1.0f, 2.0f, 1.0f );

       glVertex3f ( 2.0f, 1.0f, 2.0f );
       glVertex3f ( 1.0f, 1.0f, 2.0f );
       glVertex3f ( 1.0f, 1.0f, 1.0f );
       glVertex3f ( 2.0f, 1.0f, 1.0f );
      glEnd ();
rd->endOpenGL();
класс Film      
класс Material      
класс ArticulatedModel      
класс ArticulatedModel::Preproccess      

Класс, определяющий опции, которую будут применены к модели во время загрузки. Например, вы можете создать объект этого класса, установить в нем значение различных переменных, а затем применить к модели.

Пример, показывающий как загрузив обычный шар, превратить его в стекляный шар:
//путь к модели сферы

Code

std::string filename = System::findDataFile("sphere.ifs");

//Создаем материал "стекло"
Material::Specification glass;

//Описываем материал "стекло"
glass.setLambertian(Color3::zero());
glass.setTransmissive(Color3::white() * 0.9f); //стекло будет безцветное
glass.setSpecular(Color3::white() * 0.05f);
glass.setGlossyExponentShininess(200);
glass.setEta(1.5f, 1.0f);
glass.setRefractionHint(RefractionQuality::DYNAMIC_FLAT);

//Создаем объект, содержащий описание материала для модели
ArticulatedModel::Preprocess p;

//Теперь объект "p" содержит описание матариала. Т.е. любая модель, использующая "p", станет стекляной
p.materialOverride = Material::create(glass);

//делаем модель стекляной (второй аргумент в функции "fromFile()")
ArticulatedModel::Ref model = ArticulatedModel::fromFile(filename, p);
класс BumpMap
класс SuperShader
класс _BSPMap::Map


Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р


Сообщение отредактировал pekar - Пятница, 09 Июля 2010, 18:57
pekarДата: Воскресенье, 20 Июня 2010, 17:38 | Сообщение # 73 | Тема: Перевод книги Sams - Mastering Unreal Technology, Volume II,
почетный гость
Сейчас нет на сайте
хорошо регистрацию уберу не знал что это сложно

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Воскресенье, 20 Июня 2010, 16:58 | Сообщение # 74 | Тема: Перевод книги Sams - Mastering Unreal Technology, Volume II,
почетный гость
Сейчас нет на сайте
Дело в том что все хотят чтобы кто-то сделал все за них,но ничего сами при этом не делают. Не зачем мне указывать на мои недочеты я и все сам прекрасно знаю и это исправлю со временем, а регистрация только затем чтобы определить сколько пользователям интересен данный сайт.

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Воскресенье, 20 Июня 2010, 15:57 | Сообщение # 75 | Тема: Перевод книги Sams - Mastering Unreal Technology, Volume II,
почетный гость
Сейчас нет на сайте
А что вы от меня хотите не все сразу. Я делаю русское компьюнити по UDK. Правда многие считаю за труд других но вы не правы. Я рекламирую видео OGASODA. а любой кому он интересен. его сайт легко найти через поисковик- тут я не в чем не виноват. Любые комьюнити создаются пользователями а не одним человеком, за счет уроков других я хочу заинтересовать людей которые будут сами делать уроки и сами друг другу помогать. Я изучаю UDK давно и у меня есть свои идеи, но реализовать их сразу я не буду. У меня хостинг платный и любая реклама это способ собрать деньги на его содержание и покупку домена. Все люди в России привыкли к халяве а ее не бывает. Я не хочу сделать сайт который мне приносил бы деньги а хочу создать сообщество людей с общими интересами которые его будут сами поддерживать. А насате уже появился человек D.Amo aka Games-Territory который начал опубликовывать свои уроки-это только начало и его уроки вы больше нигде не увидите.

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Воскресенье, 20 Июня 2010, 12:30 | Сообщение # 76 | Тема: Перевод книги Sams - Mastering Unreal Technology, Volume II,
почетный гость
Сейчас нет на сайте
Эй. что вы на меня наезжаете, Перевод я приостановил потому-что один переводить не собираюсь. Да я начал перевод но перестал так как желающих мне помочь не было. а тратить от 3 до 6 месяцев своей жизни ради кого та я не собираюсь. И в данный момент занимаюсь сайтом www.udk.hs5.ru И кто считает что я присваиваю чужой труд скажите прямо. С автором видеоуроков OGASODA я разговаривал и он мне лично разрешил выкладывать его уроки вот из его письма-
Всегда рад поделиться своим творчеством)))
Конечно размещайте. Желательно не забывать указывать авторство уроков и ресурс - источник, но сие на ваше усмотрение.
По поводу Eat3D пока не думал потому что и с готовящимися проектами полно работы. А там посмотрим.

Wed, 21 Apr 2010 16:55:17 +0400 письмо от "Инструменты для создания 3D сцен и игровые редакторы" <lexa-skripa@rambler.ru>:

>
> ogasoda,
>
> Данное письмо вам отправил Алексей с сайта http://3dcreatortut.ru
>
> ------------------------------------------------
> Текст сообщения
> ------------------------------------------------
>
> Уважаемый автор я хотел бы размещать ваши уроки на своем будущем проекте -русское коммьюнити по UDK. В даный момент занимаюсь дизайном сайта. И возможно дальнейшее сотрудничество. Прошу вашего разрешения.
> И хотел бы узнать а можете ли вы заняться переводом уроков от Eat3D
> Переводя их уроки вы помогли бы многим. Не сматря на ваш ответ спасибо вам за ваши уроки респект.
>


Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р


Сообщение отредактировал pekar - Воскресенье, 20 Июня 2010, 12:35
pekarДата: Вторник, 15 Июня 2010, 05:14 | Сообщение # 77 | Тема: G3D
почетный гость
Сейчас нет на сайте
http://sourceforge.net/apps/mediawiki/g3d/index.php?title=Russian_translation#.D0.BA.D0.BB.D0.B0.D1.81.D1.81__BSPMap::Map

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Понедельник, 14 Июня 2010, 13:40 | Сообщение # 78 | Тема: Открылся новый сайт о UDK
почетный гость
Сейчас нет на сайте
Уже 178 уроков

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Пятница, 11 Июня 2010, 21:08 | Сообщение # 79 | Тема: Сайт-udk.hs5.ru
почетный гость
Сейчас нет на сайте
На сайте много обновлений смотрите

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
pekarДата: Воскресенье, 23 Мая 2010, 21:21 | Сообщение # 80 | Тема: Сайт-udk.hs5.ru
почетный гость
Сейчас нет на сайте
Я уроки ogasoda публикую с его разрешения.-он даже не просил указывать автора-

Купил торку и не парюсь.
Ключ Windows 10 Pro от 499р
Форум игроделов » Записи участника » pekar [93]
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг