![]() |
Цитата:
P.S. Даже шейдерный ассемблер не совпадает! Ну неужели как-нибудь о совместимости договорится не могли?.. |
Пишу новый пост, т.к. он совсем на другую тему, да и времени много после предыдущего прошло:
Кто-нибудь знает хороший способ генерации шума? О том, зачем это: мне нужно сделать генерацию текстуры земли пиксельными шейдерами. В шейдер идут текстурные координаты, а также одно или несколько чисел, определяющих цвет итогового пикселя (видимо, случайные числа + другие данные для функции). Пока что я нашел только Perlin Noise, но он как-то сложноват для реализации в шейлере (стараюсь уложиться в 2.0)... Если есть шум, который вполне может сгенерить более-менее похожую на реальность текстуру ландшафта - дайте знать! |
Люди, есть вопрос! Короче недавно с Visual С++ поралельно я начал осваивать Delphy. Ну и первый из движков который я нашел оказался конечно GLScene. Вопрос первый: с помощью кокого элемента я могу загружать свои модели в формате 3DS? Плиз напишите поподробней. Вопрос номер два: мне нужно разместить несколько камер в локации, так чтобы при нажатии кнопки можно было переместиться в другую часть локации. Помогте плиз! Просто уроков в сеи сейчас не очень много. От силы штук 10 найти можно.
P.S Прошу не спрашивать вопросы типа зачем тебе DELPHY когда есть С |
Здрасьте!
Я снова здесь(...или сдесь:???: ...вот блин...)после долгой отлучки от инета! Короче у меня вопрос: Можно ли найти ЛИЦЕНЗИОННЫЙ С++(желательно 2005) в обычном магазине, а не в интернете? З.Ы. Кстати тоже самое относительно DirectX SDK (не очень то мне хочется качать последние версии на Dial-up'е хотя в ближайшем будущем я хочу поставить себе спутниковый или через мобилу) |
Цитата:
|
Цитата:
Professional Edition - "всего" $711.92 Standart Standart - $266.11 замечено, что на Standart Edition, в отличие от Express, вполне можно программировать под Windows. так что если есть деньги - решайте. Однако такие продукты imo целесообразнее приобретать организации для своих программистов, а не самим программистам. |
Цитата:
Ну ладно, поднакоплю чуток, все же $266.11 можно сказать нистрашно, тем более речь идет о нужной вещи. (да и лицензия все таки) P.S. Спасиба за инфу |
Как на DirectX SDK с графикой работать? Это тоже самое что и простой DirectX 9.0C или что-то еще? (извините за такой вопрос, но я в этом DirectX - ноль...) есть ли какие-то специальные редакторы по работе с графикой в DirectX, или с этим можно работать и в 3д Максе?
|
DirectX SDK - это прежде всего набор библиотек и подключаемых файлов для Visual C++, а также samples, tutorials, documentation, взякие инструментальные средства и тд.
Цитата:
|
Цитата:
Цитата:
|
pokibor
Спасибо, вроде разобрался;) |
Что нужно чтобы создать анимацию для flash игры?
|
Извините если не туда пишу, просто не нашел (а может невнимательный;)) как в Morrowinde писать скрипты т.е. мы с друзьями решили просто ради интереса (прикола!!!) написать небольшой мод, но незнаем принцип работы со скриптами в этой игре. Помогите чем сможите, в долгу не останемси...
|
Заходи на МОДный форум там специальная тема для этого дана...
|
Скажите, а с чего надо начать создание игры?
|
Цитата:
|
Цитата:
Сам не пробывал его реализовать так как с шейдерами не работал Если получиться у тебя его реализовать то небольшая просьба - выложи реализацию !!! ))) |
Цитата:
--- Вот выложил: http://www.webfile.ru/1154582. Кому надо - качайте на здоровье (522 кб). Пояснения по управлению - в ReadMe.doc. |
упс... не качаетсо (((
|
Цитата:
Могу выслать по аське или по мейлу, если вдруг у тебя с вебфайлом какие-то проблемы. |
Ребят, а как подключить Irrlicht к MS Visual Studio .NET 2003?
|
Люди, подскажите плиз какую-нибудь прогу, где можно делать простенькие игры, но чтобы было ну очень легко освоить
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Вообще, всё зависит от тебя, если ты знаешь основы базовых языков типа Pascal или Basic, то тебе не сложно будет разобраться в каком-нибудь Blitz3D. Все программы, в которых программирование сведено к минимуму - это просто движок и редактор левелов, но и там тебе надо будет писать скрипты. На счет Game Maker - не пробывал, но говорят очень простой, попробуй, потом расскажешь :)). |
Цитата:
|
Цитата:
http://forum.igromania.ru/showpost.p...6&postcount=32 http://forum.igromania.ru/showpost.p...5&postcount=45 http://forum.igromania.ru/showpost.p...9&postcount=86 http://forum.igromania.ru/showpost.p...7&postcount=87 http://forum.igromania.ru/showpost.p...3&postcount=88 |
У меня вопрос к тебе, как к хорошему знатоку irrlicht'a:
при компиляции моего первого проекта у меня возникает ошибка, точнее при запуске: "Unable to start program 'c:/_______/razor21/мои док./vis studio proj/irr_hello/irr_hello.exe' - Не удается найти указанный файл!" Как мне ее решить? Вот код, который я написал: Код:
#include "irrlicht.h"Заголовочный файл irrlicht.h тоже подключить не забыл. |
Больше похоже на то, что проблема не в irrlicht, а в файловой системе - компилятор, по-видимому, не может найти только что скомпиленый экзешник для запуска. попробуй сохранять проект в какой-нибудь более нормальной папке, а не в "Моих документах", причем без русских букв. Я вообще обычно стараюсь делать имена папок только английскими, причем даже без пробелов. Также не забудь, что в папке с экзешником должны лежать Irrlicht.dll и (если проект .NET) Irrlicht.NET.dll. Также может быть, что у тебя как-то не так настроен компилятор (обычно он сохраняет екзешник в папке Debug либо Release в зависимости от режима).
Кстати, к lib-файлу в #pragma вовсе не обязательно указывать полный путь, если он находится в папке lib компилятора, хватит и просто имени файла. И как ты себе представляешь работу этой программы? У тебя же в ней цикла нет, она у тебя сразу завершит работу! Добавь-ка Код:
while(device->run()) |
А вообще как, в иррлихте на сколько тяжело разобраться (если не учитывать знание C++)?
|
Цитата:
А вот чтобы модифицировать движок под свои нужды, нужны уже знания поглубже. Впрочем, такая необходимость бывает нечасто. Мне пока что было необходимо лезть в движок всего два раза - один раз посмотреть, в каком порядке матрицы перемножаются для вычисления поворота, и один - исправить ошибку в классе системы частиц и дописать еще пару эмитеров. |
Цитата:
|
а насколько движок игровой (иррлихт) упрощает разработку игры?
|
Цитата:
В остальном Irrlicht можно считать надстройкой над OpenGL/DirectX, объединяющей их разрозненную структуру с длинными именами в удобные классы. |
тоесть, если я скачал иррлихт, то директИКС качать не надо?
|
Цитата:
P.S. Кстати, я надеюсь, ты выше имел ввиду DirectX SDK, а не собственно библиотеку? |
У меня назрели некоторые вопросы по Irrlicht'у:
1. Можно ли менять цвет кнопок, edit box'ов, label'ов, заднего фона? Как? 2. Как поменять размер шрифта? 3. Поддерживает ли Irrlicht русские буквы? 4. Как работать с таймером? т.е. как его подключить к проекту и примерно покажите синтаксис такого примера: каждую секунду значение label'а возрастает на 1. Подскажите.... |
Цитата:
Код:
#define ALPHA 255Цитата:
Код:
env->getSkin()->setFont(IGUIFont *Font)Цитата:
Цитата:
Код:
device->getTimer()->getTime();Код:
device->getTimer()->getRealTime();Код:
TTimer::TTimer() { |
Цитата:
Да, большое спасибо! |
Кстати, вообще с русскими буквами в Irrlicht не все понятно. В большиснтве случаев строка для вывода имеет тип wchar_t * и можно подумать, что писать нужно в кодировке unicode. Так вот, это не так. нужно писать в обычной windows'овской кодировке, но как wchar_t. При этом компилятор жутко тупит... в общем, я пока обнаружил единственный способ писать в коде русские wchar_t-константы - писать их как массив из char и приводить ссылку на него к ссылке на wchar_t (в игре я, кстати, это не использую - у меня весь текст идет из ресурсных файлов):
В общем, пишется все так: ((wchar_t *)"Р\0у\0с\0с\0к\0о\0е\0 \0с\0л\0о\0в\0о\0\0") То есть после каждой буквы ставится нулевой байт, потом это все трактуется как wchar_t (т.е. 2 байта на символ) - и все получется верно. Сдается мне, если разместить русские буквы в шрифте подальше, то все, может, и нормально будет, но это не факт, а так у меня все работает. И не забудь в конце ставить лишний \0, так как еще один \0 к нему добавится как конец char-строки. |
Я скачал тот шрифт и непокатило! Кста, почему IrrFontTool не работает, или как с ним работать? Вот я из списка выбрал шрифт нажал "перекодир" и .... ничефо! в чем дело?
И еще напиши поподробнее как поменять размер шрифта? |
Цитата:
Цитата:
Размер шрифта менять невозможно, возможно создать несколько разных файлов с различнми размерами одного шрифта. Размер задается в той же IrrFont tool (список правее списка шрифтов). P.S. Мда... такое чувство, что IrrFont Tool учитывает только 8-битную часть шрифта, а так как русская секция находится в unicode-области, то она игнорируется. Я постараюсь переписать исходники IrrFont tool и исправить этот баг. P.S. Блин. Я ламер. Все правится исправлением одной константы в IrrFontTool, и текст становится unicode... Теперь мне нужно что-то делать с игрой (у меня же все старые надписи не в unicode в файле ресурсов!) либо все-таки переписывать эту утилиту... |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Собственно, ссылка: http://www.amais.org.ru/file/index.p...ctory=Irrlicht Замечание для razor21: я не понял твоих трудностей. Ладно, в чем бы они не были, теперь, как написано выше, строковая константа L"Русское слово" нормально отображается. Вроде, она, как и должно, транслируется компилятором в юникод. Так что теперь у тебя все должно работать, не забывай только символ L строки впереди ставить - он означает, что символы строки имеют тип wchar_t, а не char. |
pokibor
Спасибо! |
Мне тут понадобились skybox'ы для игры, и я нашел отличный набор! Спешу поделится ссылкой: http://www.codemonsters.de/html/textures_cubemaps.html
|
pokibor
Прикольно! Слушай, я вот ни разу не видел твою игру... она у тебя ни где не лежит (webfile.ru, slil.ru)? |
Цитата:
В общем, если не будешь сразу ругать и плеваться, и можешь спокойно скачать в районе 50 мегабайт, могу выложить запароленый архив. А пароль тебе через ПС передать. |
Цитата:
ОК! |
Извиняюсь, что до сих пор не выложил. У моего провайдера проблемы с доступом в интернет. Сегодня узнаю, бесплатный ли у нас аплоад на работе. Если бесплатный - выложу с работу, иначе придется ждать, пока провайдер поднимет свои сервера.
--- Выложил. См. личку. |
У меня опять вопрос по вашей части! Итак сейчас я все таки нашел время на освоение GLScene (неспрашивайте почему!!!). Короче скачал пару уроков по этому горе движку. Пытаюсь экспортировать модель в формате .3DS, но нифига неполучается. Я наверное что то нетак делаю кто нийбудь может мне по пунктам все подробно объяснить, как это делается...плиззз
|
А ты проверь - GLScene точно формат 3ds понимает? А то ж может, он только .x какой-нибудь знает. Или еще вариант - ты забываешь добавить источник света, и у тебя все объекты сцены просто не освещены.
|
Не GLScene точно 3DS хавает. Просто я что то не так делаю можете написать все по пунктам, что бы все понятно...
|
Цитата:
Поверхносто, но понятно. Вобще GLScene слишком высокоуровневый. |
Вот, недавно справился с проблемой описаной на форуме раньше. Но неожданно сталкнулся с другой! Я сделал программку, ктоторая может загружать модель в формате 3DS. Загружаю я в нее достаточно простенькую модель с простнейшей текстурой, и вижу достаточно долгую загрузку модели (примерно 4 секунды). Это нормально? Просто я думаю, если в кадре будет не одна простенькая модель, а достаточно много причем более сложных! Делал программку на GLScene, достаточно низкая скорость загрузки может быть вызвана из за работы дижка? Можно ли как ускорить этот поцесс?
|
Цитата:
1) В GLScene загрузку 3ds-файлов писал какой-то ламер. 2) Вы что-то не поняли, и загружаете модель неоптимальным способом. 3) Файл с моделью сделан как-то криво. Соответственно, в первом случае Вы вряд ли что-то сделаете, во втором - разберитесь, как нужно грузить 3ds-файлы, в третьем - смените модель, лучше сперва попробуйте какую-нибудь пирамидку из 4 полигонов загрузить. |
Вот и мне показалось, что это ненормально. Загружаю я модель способом, который видел в уроке по движку. Я конечно не уверен, что этот способ оптимальный т.к. из исходного листинга написанного в статье я обнаружил сразу 3 грубых ошибки! А сама модель это простой чайник из 3DS max. Не думаю, что у движка должны были возникнуть проблемы с загрузкой этой модели.
|
Цитата:
|
pokibor
Да, все вроде стало норм, спасибо за помощь! Но возникает проблема. Так как пока ничего особо мощьного мне не надо продолжаю работать на GLScene. Короче загружаю я в движок свою сцену, но как сделать так, чтобы я мог мышью поворачивать камеру? |
Цитата:
|
Итак, просмотрев очень очень много бесплатных игровых движков (особенно тчательно просматривал те движки, в которых большое пространство дается новичкам) и пришел к выводу, что на РС их не так уж и много! Сам я изучаю Delphi, за С++ пока не берусь ибо пока это слишком сложный для меня язык. С++ конечно предоставляет хоть какой то выбор движков для поклонников языка (а таковых немало!), но на Delphi я нашел в более мение нормальном состоянии лишь один. Разумеется это GLScene. Конечно он не сравнится с другими более продвинутыми двиглами для С++, но для новичко вроде меня впринцепе подойдет. Больше всего меня взбесило наличиие ошибок в уроках для этого движка! И тут ко мне в голову пришла неожидонная мысль а не создать ли мне свой простинький 3D движок. Начать я решил с простенького квестового двигла от первого лица, где переход от локации к локации происходит щелчком мыши. Не подскажете ли вы где можно достать литературу по написанию собственного движка. И посоветуйте, как лучше это сделать. Заранее блогодарен!
|
Если я неошибаюсь то сделать это так можно
Цитата:
Цитата:
|
Цитата:
|
Цитата:
А теперь к вопросу об OpenGL. Товарищам, нагло посмевшим заявить о превосходстве DirectX 10 могу предложить посмотреть на следующие расширения: GL_EXT_geometry_shader4 EXT_gpu_shader4 NV_gpu_program4 |
Цитата:
|
Всем доброго времени суток!
Я собирался освоить возможности DirectX 8 для вывода 2D графики. И сразу же столкнулся с проблемой - существуют два способа вывода 2D: через D3DXSprite и через создание квадратных полигонов и текстурирования их - какой из этих способов выбрать? D3DXSprite кажется заметно проще, но, как я подозреваю, у второго способа больше возможностей, в плане вывода графики. Буду очень признателен за любые советы. P.S: Кроме советов из серии 'зачем осваивать DirectX, если есть хорошие бесплатные 2D движки?' |
Блин, как я уже писал ранее хочу создать собственный игровой движок. По этой теме прочитал очень много литературы. Но практически во всех статьях и книгах описываются общие принцепы создания, а не сам процесс. Люди, кто нть из вас пробовал написать свой движок? Если кто нть может мне чем то помочь напишите плизз. А то сожусь каждый раз за Delphi и даже незнаю с чего мне начать...Заранее спасибо!
______________________________ Дополняю. Напишу поподробней о моей идее. Короче, хочу написать движок для начала для создания простенького квеста. Главное, чтобы можно было загружать игровые 3D модели и передвигаться. Ни каких мощьных эфектов пока ненадо! |
Цитата:
Цитата:
P. S: Чо то я тожа хочу поотвечать на вопросы в разделе "языги программирования". %)) Лавры Покибора мешают мне спать %) |
Цитата:
Цитата:
Цитата:
|
pokibor
Вот возникли у меня вопросы к тебе по Irrlicht Engine. Так как я в Irrlicht'e ламер вопросы для тебя должны быть простыми. Первый: необходимо реализовать такую ситуацию: загрузил я из файла 1.bmp(10,70, 70,70) рисунок, как мне сделать так, чтобы при кликании мышкой по этому рисунку он менялся на рисунок этого же файла с координатами(80, 140, 140, 140) Координаты я написал примерно. Второй: почти как первый. Как сделать так, чтобы при наведении курсором мыши на рисунок он менялся. (использовать координаты и файл из первого вопроса). Третий: как в Irrlicht'e обрабатывать команды с клавиатуры, т.е. мне надо сделать так: чтобы при нажатии клавиши 'W' или стрелки ВВЕРХ этот рисунок передвигался вверх, при нажатии клавиши 'S' или стрелки ВНИЗ рисунок двигался вниз, и соответственно с клавишами 'A' и 'D' или стрелками ВЛЕВО и ВПРАВО. Подскажи, пожалуйста! |
Цитата:
Stolen ответьте себе на следующие вопросы: 1 - Могу ли я адекватно выработать требования системы, компоненты. 2 - Что такое грамотная постановка задачи. 3 - Что такое псевдокод? ( одно из самых важных на мой взгляд условий, после того как я открыл для себя данную технику, процесс программирования стал истинным удовольствием ) То есть, по сути программирование превращается в "чёткую формулировку действия или проблемы на родном языке". СРАЗУ ПРЕДУПРЕЖДАЮ, ЕСЛИ ПРИВИДЁННЫЙ НИЖЕ ПРИМЕР ПОКАЖЕТСЯ ЛОХОВСКИМ И ДЛЯ ДЕТЕЙ, А ТАКЖЕ НАДУМАННЫМ. ДАЙТЕ МНЕ ЗАДАЧУ ЛЮБОГО УРОВНЯ СЛОЖНОСТИ И Я СМОДЕЛИРУЮ ЕЁ АБСОЛЮТНО ТЕМИ ЖЕ МЕТОДАМИ. НА СЛИШКОМ СПЕЦИФИЧЕСКИЕ ЗАДАЧИ МОГУ НЕ ОТВЕТИТЬ - ВПАДЛУ РАЗБИРАТЬСЯ. ТО ЕСТЬ МОГУ ПРОВЕСТИ ПРОЦЕСС ПСЕВДОКОДА ДЛЯ ВАШИХ ЗАДАЧ. ПРОЧУВСТВУЙТЕ САМОЕ ГЛАВНОЕ - НИТЬ РАССУЖДЕНИЙ. ЗАМЕТЬТЕ, Я РАССУЖДАЮ КАТЕГОРИЯМИ РЕАЛЬНОГО МИРА А НЕ С++ ИЛИ ДЕЛФИ СИМУЛЫ ИЛИ АДА, ИЛИ ДАЖЕ С#. ТАКЖЕ ЗАМЕТЬТЕ, ЧТО ДАННЫЙ ПРИМЕР ПОХ НА ЧОМ РЕАЛИЗОВЫВАТЬ - ОН ОПИСАН В ТЕРМИНАХ ПРЕДМЕТНОЙ ОБЛАСТИ. ПРИМЕР СЛИШКОМ УПРОЩОН ПО СРАВНЕНИИ С ПСЕВДОКОДОМ РЕАЛЬНОЙ СИСТЕМЫ И МЕТОДОВ, ОПУЩЕНЫ ВСЕ "ИСКЛЮЧЕНИЯ" ( THROW - CATCH - TRY ), И МНОГИЕ ВЕЩИ ТАКЖЕ ОПУЩЕНЫ. ХОТЯ ОН И СИЛЬНО УПРОЩОН, НА МОЙ ВЗГЛЯД ОТРАЖАЕТ РЕАЛЬНУЮ КАРТИНУ. ЕСЛИ Я НАПИСАЛ НЕВРАЗУМИТЕЛЬНЫЙ ПРИМЕР ИЛИ УВАЖАЕМЫЕ ЗДЕШНИЕ ПРОГРАММИСТЫ СЧИТАЮТ ЕГО ЛАМЕРСКИМ - МНЕ ВСЁ РАВНО. Я ХОЧУ ПОКАЗАТЬ СМЫСЛ ПСЕВДОКОДА И МОДЕЛИРОВАНИЯ В ТЕРМИНАХ ПРЕДМЕТНОЙ ОБЛАСТИ А НЕ ЯЗЫКА И СИНТАКСИЧЕСКИХ ПРИПИЗДОНОФФ. EXAMPLE ПСЕВДОКОД ( САМ ПСЕВДОКОД В МЕТОДЕ ): Например, твоя задача: релизовать "модель автопилота пассажирского самолёта". Можно конечно выделить автопилот в класс, но я считаю это "действием" самолёта и вполне относится к абстракции реального мира, т. е. действию над абстракцией. Ведь у настоящих самолётов есть режим автопилота, правда? В РЕАЛЬНОЙ СИСТЕМЕ Я ЗДЕЛАЛ БЫ ДРУГОЙ МЕТАД ПРИНИМАЮЩИЙ ПЕРЕЧИСЛЯЕМОЕ ЗНАЧЕНИЕ ТЕКУЩЕГО РЕЖИМА ТОЕСТЬ averangeCurrentRegimeFlight(AUTO_PILOT); Но здесь - тестовый пример. То есть какую абстракцию реального мира можно выделить в класс? Правильно, самолёт. Я думаю хоть мы и пишем систему автоматизации управления пассажирским самолётом, но необходима иерархия. Ведь самолёты могут быть ( не знаю я эту облать, пример придумал на ходу ) "...." и "....". Создавать буду именно абстрактный класс, пренебрегая тем, что у других самолётов может не быть автопилота, т.е. подразумевая что он есть у всех классов самолётов и что совсем ужасно одинаково работает. В реальной, комерческой системе, которыми я занимаюсь я сделал бы метод автопилота абстрактным, то есть объявил его как virtual Тип Имя(параметры) = 0; и переобределил для соответствующих дочерних классов. абстракция пассажирского самолёта: class Aeroplane; /* Небольшой отступ, предположим абстракция "пилота", то есть класс "пилот" захочет установить режим "автопилота" на пилотируемом самолёте ( вполне логично, не находишь?), что ему надо сделать в реальном мире? Правильно, "включить автопилот" - именно поэтому метод "автопилот" самолёта приемлем и однозначен. Это абстракция реального мира - это не конструкция С++. Это - действие, а не сухой синтаксис. */ Остановимся на самом методе автопилота. Обматерим падлу так, что смысл действия можно будет понять ВОБЩЕ НЕ СМОТРЯ РЕАЛИЗАЦИЮ, т. е. ***.СРР файл. ActiveAutopilot(типы параметров). /* Заметьте, что если метод ActiveAutopilot принадлежал не классу, данное название было бы грубой ошибкой программиста. Его следовало бы назвать так, чтобы полностью документировать суть и "действие". Например AeroPlane_Autopilot(); */ ПРИСТУПИМ К САМОМУ ПСЕВДОКОДУ: /* параметры должны уже быть фактическими, но для наглядности оставим формальные, тем более я их не определял, заметьте, что по их названию можно безошибочно определить действие не заглядывая в исходный кот. Если, дружог, в твоём коде определены переменные аля "k", "i", "j" - ты хромосом. Даже в цикле данные нуна объявлять например так: for(int aeroplaneIndex = MIN_AEROPLANE; aeroplaneIndex != MAX_AEROPLANE; aeroplaneIndex++) Понятный код? Тото же. Или так: typedef List<Aeroplane> :: iterator aeroplaneIterator; for(employeeIterator = employeeList.begin(); employeeIterator != employeeList.end(); employeeIterator++) /*Если кто либо начнёт визжать о скорости выполнения - пусть выпьет кофе и зарубит чугунным паяльником надпись на члене: данные действия происходят во время компиляции, а не во время выполнения! Это вам не агрессивное использование template, где тип определяется во время выполнения. Также всегда ставте {} даже если выражение одно - опять же вы не потеряете ни одного такта вашего драгоценного працессара.*/ // И так, я уже говорил - параметры используем формальные - нарочно! // да и вспомогательные классы типа Time тоже легко //реализуются. Запомните, парни: всё что можете скрыть - скрывайте! void Aeroplane :: ActiveAutopilot(Time TimeAutonomyflight) { // Вот сам псевдокод. Пока не закончилось заданное время автономного полёта или недостигнута конечная точка маршрута, и управление небыло передано основному пилоту - движемся по основному маршруту, летим в следующую точку основного маршрута. Повторяем данные действия. После чего передаём управление пилоту и завершаем работу в режиме "автопилот". void Aeroplane :: ActiveAutopilot(Time TimeAutonomyflight) { while(!EndTime(TimeAutonomyflight)) || !currentRoute.EndPoint() || !mainPilot.ActiveFlight()) { // движемся к точке, возвращённой текущей точкой маршрута MoveTo(currentRoute.CurrentPoint()); // делаем активной следующую точку маршрута. currentRoute.ActiveNextPoint(); } mainPilot.ActiveManagerFlight(); // передаём управление } Вот собственно был пример псевдокода - СИЛЬНО УПРОЩЁННЫЙ. В РЕАЛЬНОЙ СИСТЕМЕ МЕТОД БЫЛ БЫ В НЕСКОЛЬКО РАЗ ДЛИННЕЕ И ОБРАБАТЫВАЛ ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ. Но суть я думаю понятна - пытайтесь смоделировать ситуацию в терминах предметной области - то есть здесь: в терминах самолёта, автопилота и пилота а не конструкций С++. Ещё раз посмотрите пример псевдокода, в нём хоть что нибудь говорится о языке программирования и деталях реализации??? /* Пока не закончилось заданное время автономного полёта или недостигнута конечная точка маршрута, и управление небыло передано основному пилоту - движемся по основному маршруту, летим в следующую точку основного маршрута. Повторяем данные действия. После чего передаём управление пилоту и завершаем работу в режиме "автопилот". */ Естественно методы MoveTo() ActiveManagerFlight() а также некоторы классы необходимо реализовать предварительно, но! Посмотрите - какая читабельность! //////////////////////////////////////////////////////////////////////// Продолжаются вопросы к столену: 4 - Чего я вобще хочу? Не хочется ли мне чего то абстрактного а не определённого конкретного? 4 - Какие методы отладки приложений я знаю? 5 - Что представляет собой высокоуровневая архитектура и чем собственно эта дура отличается от проектирования? 6 - Возьми любой header любой своей программы и выложи интерфейс любого класса включая объявление методов здесь. Если я смогу по имени класса и именам параметрофф панять "что это и что оно собой прдеставляет" то ты убийца Кармака иначе - утчи матчасть %)) Цитата:
|
Мля тупо метод назвал... уберите Active... просто Aeroplane.Autopilot();
И вобще я жестоко ступил... такого метода не должго быть... должен быть метод принимающий текущее состояние полёта: enum regimeFlight {MAIN_PILOT_MANAGER, AUTO_PILOT, ETC.} averangeCurrentRegimeFlight(AUTO_PILOT); то есть должен быть метод устанавливающий режим полёта а не отдельно автопилота... Цитата:
НО ОСНОВНУЮ ИДЕЮ: ПСЕВДОКОД Я ПОКАЗАЛ. |
Fulcrum
Грандиозно! Надо бы кинуть на твой пост ссылку как на статью. Цитата:
Теперь о рисовании рисунка. В твоем случае его нужно рисовать методом void IVideoDriver::draw2DImage ( video::ITexture * texture, //Рисунок const core::position2d< s32 > & destPos, //Область, куда он рисуется const core::rect< s32 > & sourceRect, //Область, которая рисуется const core::rect< s32 > * clipRect = 0, //Это у тебя будет 0 SColor color = SColor(255, 255, 255, 255), //Это будет SColor(255,255,255,255) bool useAlphaChannelOfTexture = false //Используется ли Alpha-канал ) Ну и меняя передаваемую в цикле рендера в sourceRect облать после клика мышью ты добьешься рисования того, что нужно. А вообще см. пример 06.2DGraphics из комплекта примеров, идущего с Irrlicht. Цитата:
Код:
if (buttonRect.isPointInside(device->getCursorControl()->getPosition()))Цитата:
Пример см. в 05.UserInterface. Там, правда, он используется для обработки событий от интерфейса, но абсолюто также его можно использовать для обработки сообытий от кнопок и мыши. Вот пример: Код:
bool BattleEventReceiver::OnEvent(SEvent event) |
Цитата:
Цитата:
pokibor, пожалуйста можно чуток подробнее про первое и, если можно, по понятнее. :) |
Цитата:
Цитата:
pokibor, пожалуйста можно чуток подробнее про первое и, если можно, по понятнее. :) |
Я ж тебе сказал: пример 05.UserInterface. Там ты поймешь, как наследовать обработчик, и какой метод ему переопределять. Как в этом же методе можно ловить события мыши, я тебе показал в самом нижнем коде выше. Константы для различных клавишь и событий от мыши см. в хелпе. event.KeyInput.PressedDown определяет, нажата клавиша или отпущена. Для мыши нажатие и отпуск кнопок являются различными событиями. event.MouseInput.X и event.MouseInput.Y - координаты курсора мыши в момент нажатия. event.MouseInput.Wheel - на сколько крутанулось колесико мыши (поворот колесика - отдельное событие).
Итак, в итоге ты должен научится отлавливать любые события. Ну а дальше при возникновении события нажатия кнопки мыши ты проверяешь, не в нужном ли тебе rect'е находится курсор и меняешь передаваемый в отрисовку rect. Вроде все понятно изложил, ты главное 05.UserInterface разбери - сразу отпадет большая часть вопросов. |
Блин... аж стыдно стало, это был крик души, а не статья.
Насчёт С#. Покибор, если интересует живое обсуждение применения данного языка - http://www.kriconf.ru/2007/rec/KRI_2...ming_forum.ogg Правда там обсуждается многие аспекты но С# обсуждался слишком часто. |
Кстати, на sheppard.ru была интересная идея по созданию своего 3-d движка, заключающаяся в том, чтобы спереть оный у Самого Кармака, ибо код движка второй кваки рассекречен ... Самим!
|
Цитата:
|
Цитата:
|
Цитата:
А по какой вы части если не секрет. Уж не сетевое ли программирование часом? |
pokibor
ОК! Спасибо! |
Люди плиз подскажите, подробно как установить физический движок ODE на GLScene. Просто у меня возникли неожиданные траблы с установкой...
|
pokibor
Неудивительно, но у меня опять возник вопрос, теперь более глобальный :). После того, как я выучил самые основы Irrlicht я бы хотел попробовать создать такую ситуацию: появляется окно, в котором написано мол привет, нажми на эту кнопку и ты начнешь играть (это-то я могу), далее после того как юзер кликает по кнопке появляется город и чувачоg, которым надо управлять в городе. Создать кнопки надписи, загрузить карту города и рисунок человека я смогу, НО проблема у меня вот в чем: как это делается??? Я имею ввиду, что после того, как сделан клик по кнопке появился город и чел. Ну я надеюсь вопрос понятен? Ну вот как делается в играх: дано меню, кликаешь по "Новая игра!" и появляется сама игра. |
Цитата:
Теперь по поводу кода. Тут нужно сделать для удобства две отдельные функции: [code] void Меню (IrrlichtDevice *Device);//Отвечает за обработку меню void Игра (IrrlichtDevice *Device);//Отвечает за игру [code] Певая функция будет, собственно, рисовать в цикле рендера твое меню, назначит Device'у перед началом рисования обработчик и прочее. В общем, выглядить она будет примерно так: Код:
void Меню (IrrlichtDevice *Device) {Код:
void Начать_Игру() {Код:
void Игра (IrrlichtDevice *Device) { |
pokibor
Большое тебе спасибо! Но у меня по приведенному тобой коду есть несколько вопросов. Первый: в функции void Menu (IrrlichtDevice *Device) есть цикл, так вот у меня вопрос связанный с его условием выполнения, т.е. что такое "Не_Надо_Выходить". Второй: Элемент_Интерфейса_Меню, я так понимаю, это может быть button, static text, scroll bar, да? Тогда писать надо так: Код:
for each buttonКод:
for each buttonИ наконец :) третий вопрос: в функции void Game(IrrlichtDevice *Device) тоже есть цикл, объясни, что писать в его условном выражении. Спасибо! |
Странный вопрос. Не_Надо_Выходить - это некое условие, как его написать - твое дело. Например, если у тебя будет некая переменная is_exit, которая по умолчанию false, а когда пользователь щелкнет на кнокпе "Выход" станет true - то пиши while (!is_exit). Вообще, ты как-то слишком буквально понимаешь приведенный выше псевдокод.
Теперь по поводу второго вопроса: setVisible в Irrlicht определено в интерфейсе IGUIElement, от которого наследуют все конкретные элементы интерфейса. А как ты их будешь перебирать (тут некоторый пробел в моих знаниях... если не ошибаюсь, в стандарте C++ никаких for each нет, она введена была в .NET, и к Win32-приложениям отношения иметь не должна) - твое дело. Хочешь - пихать ссылки на все создаваемый тобой элементы интерфейса в один массив или вектор на IGUIElement *, хочешь - разделяй по типам, хочешь - вообще заводи отдельные переменные для каждого добавляемого элемента и вручную прописывай setVisible им всем. |
pokibor
Большое спасибо! Теперь я понял, как энто все реализуется! Еще раз спасибо! Кста, как полноэкранный режим врубить? |
Цитата:
Код:
IrrlichtDevice* irr::createDevice ( |
Бафое спасибо!
|
Ну чтож, сюда, так сюда. Шейдеры говорите? А можно поподробней?
Я думал, что шейдеры только и умеют, что воду красивую делать, да кубики блестящие рисовать :) а на счет дырок от пуль я не знаю. Можете мне, остолопу объяснить, как такое сделать? (речь идёт о ирлихте (для тех, кто не в теме)) желательно исходничком :) |
Нет, не можем. Потому что это один из тех вопросов, по которым впору книжки писать. Так что вооружайся книжками и статьями из Интернета - и впреред. Как шейдеры в Irrlicht использовать, смотри идущий с Irrlicht пример 10.Shaders, а вот как их писать - учись. Могу лишь сказать, что тебе неплохо бы сразу выбрать, какую библиотеку ты будешь использовать - Direct3D или OpenGL (в Irrlicht, как ты должен знать, можно использовать любую из них). В первом случае после изучения основ принимайся за HLSL, во втором - за GLSL. Ну а некоторую общую информацию по шейдерам смотри http://forum.igromania.ru/showpost.p...&postcount=594.
Еще тебе, кстати, придется с версией определится, но про возможности каждой версии вершинных и пиксельных шейдеров узнаешь в процессе изучения онных. |
Вопрос по irrLight'у:
Как сделать поверхность земли не по карте высот (*.bmp), а взять значение высоты конкретной ячейки из внешнего массива? TerrainNode - этого не позволяет :( |
Цитата:
|
Так почему же ты считаешь, что шейдерами делать следы от пуль в стенах проще? Испокон веков это делали спрайтами, а вот теперь ты предлагаешь делать их шейдерами, утверждая что так проще. Проще кому? Компьютеру при расчётах? отлично, но лично я пока за этим не гонюсь :). Мне бы как-нибудь попроще для написания (то есть проще в реализации). есть-ли какая-гибудь возможность определить вектор нормали того полигона, с которым происходит коллизия?
|
Цитата:
Цитата:
Цитата:
Цитата:
|
А это правда, что у ирлихта большая нелюбовь к 3ds файлам новой версии 3DMax-а? Есть-ли способ их подружить, если это не сложно конечно? А то меня как-то не прельщает конвертить файлы :(
А какой формат файлов у ирлихта самый "любимый"? |
Цитата:
Экспортер для 3D Studio Max в x качай здесь: http://www.andytather.co.uk/Panda/di...downloads.aspx. |
Перевернуть координаты XYZ -> XZY
Имеется ли способ привести координаты ирлихта в соответствие с привычным:
X - горизонтальная ширина (вправо-влево от зрителя) Y - горизонтальная глубина (ближе-дальше от зрителя) Z - вертикальная высота Чтобы где нибудь в заголовке один раз прописать и потом пользоваться... |
А как на счёт My3D? тем более, что этот эксопртер есть в поставке с ирлихтом.
|
Цитата:
Кстати, знаешь, почему Z-буффер так назван? Потому что координата Z отродясь уходила вглубь сцены. Почему в 3D MAX решили выпендрится - загадка. P.S. Хотя можешь, конечно, воспользоватся C'шным препроцессором. Например, чтобы задавать вектора в удобной тебе форме, определить макрос Код:
#define vector3df_max(X,Y,Z) vector3df(X,Z,Y)Цитата:
|
Скорость перемещений камеры FPS
Помогите разобраться пожалуйста
Масштаб поверхности 1:1:1 FPS-камера управляемая клавишами-стрелками летает как угорелая поймать интересующий меня объект, а тем более рассмотреть его со всех сторон практически невозможно... Хочу замедлить камеру.... |
Цитата:
|
кто-нибудь знает физический движок newton?
Если знаете, подскажите пожайлуста, как сделать следующее. У этого невтона есть пример для ирллихта, в котором можно полетать камерой, и постреляться ящичками. после небольшой модификации, я сделал так, чтоб ящички стрелялись "очередью". Таким образом очень быстро настреливается предел в 512 ящиков, и игра вылетает. Чтоб она не вылетала я хочу удалять первый кубик, и (они там как я понял хранятся в массиве) смещать их в массиве на один влево (надеюсь, понятно обьяснил). но чего-то у меня ничего не выходит. Посмотрите пожайлуста этот пример, и объясните как это сотворить. |
Недавно наткнулся на самописный модуль для иррлихта, позволяющий в нем использовать TrueType шрифты.
Одна из ссылок: http://www.zgock-lab.net/IrrFreeType.zip Хотя я нашел "нашу" разработку. Правда еще не пробовал ею пользоваться - мне еще до этого как до москвы в позе зю. :( Движок оказался хорошим, мощным, но документация рассчитана явно не на новичка, а русскоязычные ресурсы по этому движку практически отсутствуют. :( |
Цитата:
Цитата:
P.S. А без знания английского языка (хотя бы технического) в геймдев вообще бесполезно лезть. ZaVok Тут подумал - если физика интегрируется в Irrlicht, то вполне может быть, что, удалив node в Irrlicht, ты удалишь его и из физики. А удалить node в Irrlicht можно методом ISceneManager::addToDeletionQueue(ISceneNode *node); |
Там в хелпе сказано, что можно не заморачиваться битмапами, а просто использовать любой TrueType шрифт. Что, в общем-то, дает гибкость в поддержке любых языков, если использовать что-нить юникодное, например arial_uni.
Ситуация как раз в том, что я не проггер, о трехмерной графике знаю только основы и то я уже начинаю в этом сомневаться. Единственное, с чем нет проблемы - это с английским, как-никак все-таки кандидатский минимум дает о себе знать. :) После его сдачи технический английский не знать практически невозможно. А что я хочу видеть в хелпе для новичков? Туториалы, это, конечно, хорошо, но можно было начать немного по-другому, имхо. Хотя, конечно, может быть что я просто не могу нормально разобраться в доке, ибо ся только читать умею более-менее, а сам испорчен кандидатским зачетом по делфям. Тогда вопрос - где бы надыбать ссылку на что-нить начальное или среднее по применению namespaces или как там оно правильно называется? Главное, чтобы не шлак был, а что-то нормальное. И, желательно, на русском (ну ненавижу я английский, просто ненавижу :/ ). P.S. А может с такими пожеланиями как у меня будет проще заюзать какой-то из готовых опен-сорс движков, основанных на иррлихт, в которых уже прикручено все, что для счастья нужно? |
Цитата:
Кто тебе мешает из того же юникодного создать битмап с поддержкой всех нужных языков? Битмап создается нажатием одной кнопки, так что "заморочкой" это назвать никак нельзя. Цитата:
Цитата:
Цитата:
Цитата:
Например, все интерфейсы irrlicht включены в один namespace irr. Непосредственно в этот namespace входят такие интерфейсы, как IEventReceiver, IrrlichtDevice и прочие "общие" объекты. В irr вложе несколько namespace'ов: core содержит все основные классы трехмерной графики, такие как vector2d, vector3d, maxtrix4 и прочие, а также функции их обработки; scene - все интерфейсы, используемые для работы с трехмерной сценой, такие как IMesh, ISceneNode при прочие. Ну и так далее. потому если не делать никаких using, то тебе придется везде писать: irr::IrrlichtDevice irr::scene::ISceneNode а если включить все namespace'ы irrlicht: using namespace irr; using namespace core; using namespace scene; using namespace video; using namespace io; using namespace gui; , то можно писать без префиксов: IrrlichtDevice ISceneNode Надеюсь, понял. Цитата:
|
А вот и есть движки использующие иррлихт в качестве рендерера. С прикрученными уже либами для работы с сетью, звуком и скриптовым языком. На одном из таких движков писаны серьезные коммерческие игры. Ссылка была где-то с оффсайта иррлихта. Попозже будет время поискать и я ссылочку выложу.
|
Цитата:
Что же касается скриптового языка... а зачем оно надо? C++ ни один язык не обойдет по функциональности, так что скриптам остаются разве что рантаймовые задачи(например, скрипты AI или уровень, описаный скриптами). Но для реализации таких штук нужно как минимум неплохо знать алгоритмы синтаксического анализа, даже если язык какой-то уже есть (иначе как ты будешь разбирать предложения этого языка? Собственно разбирать их, конечно, и сторонняя функция может, но вот понимание когда какое правило срабатывает и в какой последовательности конструкции языка попадают в стек необходимо). |
BlueSky ты про RABCAT говоришь? Очень жаль, но их страницы я так и не нашёл.
Я хочу спросить, можно-ли в один node загрузить два отдельно текстурированных меша? |
Цитата:
|
просто с другом хотим сделать игру, с рандомальной генерацией уровней.
на словах это выглядит так: с помощью хитрого алгоритма генерим лабиринт и сохраняем его в массив, таким образом, что "0"-это пустая комната, а "1" - комната забитая пространством(то-есть стеной). объекты (меши) будем грузить из файла, так как хотим , чтоб стены были у нас фигурные :) Но создавать массив из node не очень хотелось, но как я погляжу, всё же придется. Так же хотим сделать игру, с демонтажем стен. То есть, с имх уничтожением. Но вот в чем проблема, не пересчт=итывать ведь нам каждый раз дерево коллизий? МОжно в ирлихте создать дерево коллизий для каждого обьекта карты в отдельности, чтоб потом с ним было удобней работать? А так же, ну очень нужен алгоритм генерации лабиринтов. Тот что мы сделали, выдает какую-то странную лабиринту. :(. три раза подряд сделал одну и ту же карту. Нам поможет даже не сам программный код, а сам алгоритм. |
Цитата:
Цитата:
Цитата:
А вообще можете использовать любые алгоритмы генерации шума, например http://freespace.virgin.net/hugo.eli...s/m_perlin.htm. |
Самопальный Mesh (Vertex & Indices)
Просьба не бить ногами, а помочь мне ради бога разобраться как сделать сабж.
Хочу получить четырехугольную пирамиду. Создаю (как в уроке 3) пять вершин (Vertex): 000, 200, 202, 002, 121 начинаю их соединять (строю индексы Indices): u16 Indices[] = { 0,4,1, 1,4,2, 2,4,3, 3,4,0 }; ну и так далее... Вопрос: Имеет ли принципиальное значение в каком порядке обходить вершины, или нет. (замечено, что при различных комбинациях индексов может вообще не получиться никакой фигуры... только рваные части в лучшем случае) И вообще простроение самопального меша в иррлихте программным способом сильно отличается от привычного в 3дМаксе. Хотелось бы разобраться, чтобы научиться делать сложные фигуры, состоящие из простых и т.д. В хелпе ничего про это ненаписано мож ссылочку кто знает где почитать? А? |
Цитата:
Цитата:
|
Вот ссылочка на RABCAT: http://www.rabcat.com/ (РС игры на иррлихте для консолей).
А вообще прожекты мона смотреть тут: http://irrlicht.sourceforge.net/scre...-projects.html Хотя там ссылочка на рабкат не рабочая получается. :( Ща вот пытаюсь соорудить себе экзампл сам. :) Т.е. встает какая-то проблема - лезу по стандартным экзамплам в поисках того что мне нужно и пытаюсь разобраться, а не тупо копи-пастить. В результате порядок следования получается намного более интересным и логичным. Получается типа как мини игру делаю. :) Обстоятельно, логично и по порядку. Если кому-то интересно, то могу потихоньку делиться своими наработками с елико возможно подробными комментами на русском. Авось кому поможет освоиться. Так что если кого-то действительно интересует, то пишите тут, тут же и буду выкладывать куски кода, заодно, скорее всего, буду на http://www.elite-games.ru/conference...f03ef2f42757a0 выкладывать их же параллельно (модеры, не сочтите за рекламу другого сайта, за флуд и за оффтоп). |
А какие у ирлихта возможности по созданию воды?
Просто та вода из примера, это не вода, а какой-то обман. план колыхающийся. Даже если наложить текстурку воды, получится убожество, которое сейчас водой не считают. А ведь хочется чтоб с отражениями, преломлениями... (ПС я только что проснулся, по клавишам ещё плохо попадаю, но вроде всё нормально написано.) |
Цитата:
|
Кстати вот что по поводу шрифтов. Скачивает твою гаму какой-нить японец, а гама сетевая и чат в ней встроен. Хочет бедный японец пообщаться со своими сородичами на родном языке, а ему фигу с маслом. И будет он тебе мозг долбать, чтобы ты сделал шрифт с иероглифами. И тут ты начинаешь долбаться мозгом, ибо ты иероглифов не знаешь...
Так а не проще ли сразу прикрутить какой-нить юникодный шрифтец и не мучаться? По ходу вообще можно без проблем обеспечить возможность юзверям самим использовать понравившийся шрифт. Разве это плохо? |
Цитата:
|
В eve-online шрифт чата можно использовать абсолютно любой и этот шрифт никак не касается остальных элементов интерфейса, что, я считаю, очень даже правильно. Так что тотальная замена всех шрифтов и не предлагалась.
|
Самопальный Mesh (editing runtime)
Кто нибудь знает как изменить свойства меша в runtime (тоесть во время работы программы)?
Согласно документации свойства меша изменяются только на этапе создания, а после добавления в мешбуфер и создания на его основе узла сцены (SceneNode) - фигвам. Или я ошибаюсь? |
Цитата:
|
Цитата:
Хотелось бы в меше "вырезать" воронку и "прокрасить" другой текстурой... Схема поверхности у меня такая (Классы все самописные): Базовый меш тайла 1х1. Меш блока (квадрата) поверхности земли, в "MeshBuffers" которого находятся 10 000 (100х100) базовых мешей тайлов, каждый в своей позиции. Из меша поверхности земли формируется OctTreeSceneNode и далее в runtine работаем уже с OctTreeSceneNode, в качестве минимального куска поверхности, по необходимости подгружая и выгружая другие куски... |
Ну так тебе нужно только изменить позиции затронутых взрывом вершин, а также их текстурные координаты. Разумеется, в текстуре должно быть все необходимое.
|
Цитата:
Выдержка из доки: Цитата:
что мой електронный переводчик перевел отвольного так: IMeshBuffer - Структура для хранения сетки с единственным материалом. А я назначаю материалы отдельным мешбуферам, но похоже напрасно я это делал. Из вышеприведенной цитаты, следует понимать, что при создании SceneNode все ранее назначенные мешам материалы будут заменены на материалы SceneNode? И единственный способ все-таки сменить текстуру - это поменять текстурные координаты Vertex' ов (TCoords), чтобы они указывали на другой графический блок в ранее загруженном графическом файле? Других способов нет? |
А зачем тебе другие? Этот - самый простой. Ты соеденяешь все возможные текстуры в один большой рисунок, накладываешь его как текстуру, и получаешь возможность быстро изменить что угодно. В случае, если у тебя вся земля представляет собой один каркас, такой вариант оптимальный.
|
Я абсолютно не в рубаюсь в Vertex'совые TCoord и иже с ними... :(
И разобраться немогу, хотя бьюсь уже несколько дней ..... Вот например: pMeshBuffer->Vertices[0] = S3DVertex(0,0,0, -1,-1,-1, clr, 0, 1); последние 0 и 1 что означают? В доке: irr::video::S3DVertex::S3DVertex ( f32 x, f32 y, f32 z, f32 nx, f32 ny, f32 nz, SColor c, f32 tu, f32 tv ) [inline] и все ... них...чего не понятно... что за tu? что за tv? Есть другой способ: Добрый человек .::jimon::. подсказал как использовать материал, назначенный в IMeshBuffer'ах в IMeshNod'ах. Нужно всеголишь установить флаг: IMeshSceneNode*->setReadOnlyMaterials(true); там были еще кое какие заморочки, но я разобрался. Так что пока все окей. |
tu и tv как раз текстурные координаты и есть.
x,y,z, - позиция вершины nx,ny,ny - координаты вектора нормали c - цвет вершины Вроде все понятно... |
Цитата:
про цвет - тоже, про вектор нормали - относительно понятно, что tu и tv текстурные координаты - тоже понятно, но вот почему 0 и 1 - непонятно, за что они отвечают и как их использовать - непонятно. в треугольнике - 3 вершины. У каждой свои tu и tv текстурные координаты. Как, в какой вершине, выставлять эти значения? В общем - плаваю я в этом вопросе.... |
Цитата:
|
Цитата:
Смотря что если ВЫ - это Питер Молинье. |
Может кто расскажет или ссылкой плюнет как правильно сглаженные модельки в 3DS формате в иррлихт запихивать? А то что-то все дюже квадратное получается.
|
Срочно нужна помощь по хоть какому-нибдь совмещению DirectShow и полноэкранного режима окна. Нужно, чтобы в окне на определеном месте (т.е. полноэкранный режим IVideoWindow не предлагать) играл ролик, при этом окно могло находится в полноэкранном режиме. Я пробовал уже и делать окно IVideoWindow дочерним к нужному (при этом выстакивала Protection Error), и использовать Windowless-режим VMR9 (при этом изображение просто не показывается в окне, хотя в оконом режиме все в порядке)... В общем, жду помощи.
|
След от взрыва лучше делать через вершиный шейдер мне кажется )))
Насчет видео: В сэмплах директикса есть исходник PlayWnd В нем покопайся - я по нему делал... |
Цитата:
Вариант свернуть это окно на время проигрывания видео и воспользоваться полноэкранным режимом IVideoWindow я оставил на крайний случай, так как не смогу, например, сделать видеовставки прямо в миссиях (а мне хотелось бы сделать как в Tiberium Sun - там порой на месте миникарты видеовставка играла. В общем, вся загвоздка в полноэкранном режиме... |
Ты создаешь дочернее окно в то время когда у тебя находиться уже одно окно в полноэкранном режиме )
Поетому косяки у тебя. ТАк наврядли что то получиться сделать. ЛУчше попробывать рендерить видео в этом же окне. Где то видел пример как рендерить видео на кубе чтоль (может тебе так и надо попробывать сделать. |
Цитата:
|
Evil.Hard наверное имеет ввиду пример Render to Texture.
А можно накладывать анимированную текстуру на объекты? |
Цитата:
Цитата:
--- Все! Проблема решена. Я сделал класс, который генерит в Irrlicht текстуру на основе видеофайла, то есть гипотетически можно ренедерить видео прямо на юнита, например. Кого интерисует, как такое сделать - спрашивайте, помогу. |
Кто-нибудь знает, как в Newton-е делать Character'а?
Ну аналог FPSCamer-ы c коллизией в ирлихте. Ирлихтовский вариант меня не устраивает, часто бывает так, что персонаж застревает в полу, и не поднимается по лесенкам. У Newton-а есть конечно пример, как это сделать, но я в нем не смог разобраться, потому что пример пользует для вывода картинки на экран какие-то сторонние библиотеки, все процедуры свалены в кучу... вобщем нечитабельно это для меня ещё. Пытался делать по своему, но это больше похоже на катание на воздушной подушке. Помогите, не знаю что делать. |
Люди, кто знает как и хочет помочь в создании игры. Пишем вдвоем 3D RTS на С++. Есть ландшафт, UI, юниты и основы AI, вражеский AI в разработке. Нужна графика и сценарий. Если есть кто-то кто программирует на C++ под DirectX, и имеет недюжинный опыт, то откликнитесь. И вопрос, как лучше делать AI врага в игре : шаблоны, нейронные сети, конечный автомат?
|
Цитата:
Цитата:
Цитата:
Итак, я рекомендую обратить внимание на CBR и нечеткую логику. Возможно также попробовать сделать многоагентную систему, но это скорее уже не к AI противника имеет отношение, а к индивидуальному AI юнита. Хотя как раз его и конечным автоматом можно сделать. но многоагентная система интереснее - например, сделать так, чтобы он мог "общаться" с близлежащими своими. Если "свой" видит врага, а юнит нет, то "свой" ему может сказать об этом. Таким образом, если выстроится цепочка юнитов и враг подойдет с фланга, то о нем узнает вся цепочка, а не только стоящие рядом с местом нападения юниты. P.S. Как вы понимаете, присоединится я к вам не могу - у меня свой проект есть. Но если будут вопросы - обращайтесь. |
Народ, есть вопрос. Ковырялся в хелпе, но так и не нашел, можно ли как-то выводить кроме старых добрых фпс еще и кол-во полигонов в сцене? Нужно сие счастье для контроля и оптимизации.
|
я конечно не уверен, но можешь попробовать:
Цитата:
Я код взял из примера для Newton-а, с выводом графики на иррлихте. Ты конечно умный человек, но на всякий случай(а так же для потенциальных читателей) скажу, что этот код нужно засовывать в цикл, в котором ты выводишь графику на экран. |
Таки спасибо большое, осталось теперь ньютон прикрутить. :)
|
Господа, просьба к вам не бросать в меня тухлыми помидорами, называть нубом и ламером можно (ну не программер я, не программер). :)
Однако не мог бы кто-нибудь плюнуть в меня ссылочкой или отписать как же все-таки правильно пользоваться иррлихтовским хелпом? У меня сейчас встала проблема вычитать конфиг-файл. Хочу для этого пользоваться ирллихтовскими классами. Я так понимаю мне для этого нужно воспользоваться вот этим: Код:
virtual s32 irr::io::IReadFile::read ( void * buffer, |
Цитата:
Цитата:
Цитата:
Кстати, обычно под "конфигом" понимают текстовый файл, а не двоичный, посему пользоватья функциями для чтения двоичных файлов не совсем удобно. Цитата:
Но на твой вопрос отвечу. Очевидно, что данная функция (точнее, метод интерфейса IReadFile) читает из файла несколько байт (их количество определяется переменной sizeToRead) начная с текущей позиции указателя и записывает их в буффер, ссылка buffer на которою сюда также передается. Очевидно, что под буффер нужно выделить память не меньшую, чем количество запрашиваемых байт. Если ты не понял ничего из написаного выше мною (а так, скорее всего, и есть) и не знаешь, что такое интерфейс, за чем он нужен и как выделять память в указатель (а также что за тип такой void), то я не буду устраивать тебе тут курс языка C++, а пошлю в http://forum.igromania.ru/showthread.php?t=23543, где ты сможешь скачать нормальную книгу и изучить-таки C++. А иначе скоро пойдут вопросы "а что такое виртуальные функции", "а как наследовать от класса" и им подобные. |
Цитата:
Что такое файл и как им пользоваться, я знаю. Код:
FILE *configFile = fopen("config.cfg", "r");Цитата:
Хелп открываю, читаю. Что выполняет каждая функция - написано вполне понятно на вполне читабельном аглицком. Понятно какие параметры даже туда запихивать, какого типа они дожны быть, а вот как их вызывать - совершенно непонятно. Цитата:
А вообще просто попался именно этот пример для вопроса. Минут 15 до написания поста был бы другой пример. Цитата:
В результате получил ответ на совершенно другой вопрос. Еще и скрепленный изрядной долей негодования от "гуру", вместо того, чтобы уточнить или разобраться, что спрашивают, ладно, всякое бывает, и даже посты в топике не соответсвуют теме оного, и с ноги можно не той встать и т.п. Переформулирую и оконкретизирую вопрос с учетом вышенаписанного. Не мог бы кто-нибудь кратко и внято (желательно с минимумом сленговых словечек и профжаргона) объяснить как вызовы функций сообразуются с их описанием в ирллихтовском хелпе? Или ссылкой в меня плюнет. А то на дотнет прийдется перейти, чего бы мне карйне не хотелось бы. :( |
Цитата:
pokibor правильно сказал. прежде чем читать документацию по движку, не мешало бы документацию по функциям стандатной библиотеки почитать.. Цитата:
из этой ссылки должно быть понятно почему - http://www.cplusplus.com/ref/cstdio/fscanf.html собственно сам вопрос - Цитата:
(что именно из "Reads an amount of bytes from the file." непонятно?) |
А может кто-нибудь ответить на вопрос
что такое движок и какие функции он должен обеспечивать? |
BlueSky
:lol: Ой, ржу! С тобой, о великий программист, все ясно! Я-то думал, ты вообще ничего не понимаешь в программировании (ну ошибся, начал учить что-то раньше времени - всякое бывает), а оказывается, ты, что-то понимая, умудрился сесть за построенный на интерфейсах C++ - движок абсолютно без знания объектно-ориентированного программирования (это слегка описывает твое понимание программирования как "нулевое")! Потому что если бы ты его хоть немного знал, то вопроса "как вызовы функций сообразуются с их описанием в ирллихтовском хелпе" (тем более, после того, как я тебе сказал, что это не функция, а метод интерфейса) не могло возникнуть в принципе. Короче, все, что я написал, остается в силе. И ссылка то же. Читай, что такое классы (интерфейс - полностью абстрактный класс), для чего они и с чем их едят. А потом садись за движок, требующий этих знаний. P.S. Уж не знаю, как ты на Дельфи писал (все-таки Object Pascal тоже объектно ориентированный язык), но объектная половина языка явно прошла мимо тебя. Цитата:
|
Ну заменить fscanf на fread и все будет работать. Это не суть важно, хотя мне не совсем понятно зачем было в Сях городить такой огород с вводом-выводом.
Перефразировать вопрос больше не буду, ибо вы напрочь не хотите его понимать - для вас это "слишком низкий уровень". А сейчас начнутся крики наподобие "все ламеры руки прочь от ООП", "побойся Страуструпа" и т.п. Однако это не изменит того, что ООП - это просто чуть более удобная организация процесса программирования как такового, с возможностью абстрагироваться от основ, чтобы, потеряв в производительности (с современными мощностями это, обычно, не так уж и страшно, хотя видеть тот же Х3, тормозящий на хай-энд железе просто противно, хотя игра красивая, ничего не скажешь), увеличить простоту создания программ и скорость их создания. Что у нас там есть в ООП: 1. Инкапсуляция 2. Наследование 3. Полиморфизм Итак. 1. Есть переменные глобальные и локальные. Использование только локальных переменных и переопределение их внутри функций и процедур в зависимости от типа, который нужен, а также хранение функций и процедур вне основной программы, даст эффект инкапсуляции. 2. Вызовы одной одной функции в другой, с добавлением своих функций, а другой в третьей, с добавлением своих функций, дает нам наследование, как таковое. 3. Самый простой и доступный пример - функция сортировки, которая получаемое множество данных преобразует к одному виду, после чего им оперирует, а на выходе выполняет обратное преобразование, так получаем полиморфизм. Вот и весь хваленый ООП. Так что можно называть как душе угодно, главное понимать, как это работает. А теперь можете реветь тут как раненые белуги, называть меня последним законченным ламерюгой, ничего не понимающим в программировании, а уж тем более в ООП. Разрешаю. Даже с удовольствием почитаю как-нибудь на досуге. Только не забывайте, что ООП - это всего лишь частный случай системного подхода, не больше и не меньше. P.S. А за ссылочку на книги - спасибо. |
Цитата:
Цитата:
Цитата:
IReadFile - интерфейс и Irrlicht вообще построен на интерфейсах, значит, скорее всего, объект с таким интерфейсом нужно откуда-то получать, а не создавать самому. Откуда можно получить файл? Из файовой системы. Глаза сами бегут к интерфейсу IFileSystem в хелпе. А откуда получать файловую систему - основополагающий объект? Очевидно, из "главного интерфейса" - IIrrlichtDevice. Так что все в хелпе есть, нужно только обладать базовыми знаниями ООП и уметь читать. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Вывод - механизм наследования делает за тебя часть работы, а на некоторых языках программирования еще и оптимизирует код. Ну и разумеется про естественное упрощение восприятия кода забывать не следует. Цитата:
Цитата:
Цитата:
Цитата:
|
А почему собственно никто не горит желанием написать движок с нуля?
|
Цитата:
|
Цитата:
|
Ну чтож Си я потихоньку осваиваю...
Но вот по моему легче написать хороший движок а потом его дорабатывать. |
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
И все-таки я попытаюсь, в свободное время, и убедюсь на собстенном опыте.
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Недавно у меня возник один вопрос. Как уже было вышеупомянуто программирую я на Delphi (седьмая его версия). В программировании игр я новичек, но Delphi знаю достаточно хорошо (на мой взгляд). Что лучше подходит для программирования игр (начинающему) DirectX или же OpenGL? Подчеркиваю, что речь идет именно о программировании на Delphi. Во первых мне хотелось бы узнать где можно заполучить последнии версии данных библиотек и что нужно для первой и для второй. Во вторых насколько много информации (в лучшем случае книги) можно найти в интернете. Я например при поиске книг по DirectX на Delphi не нашел ни одной книги для скачивания. В основном все книги по прогаммировании на DirectX идут на С++. Так же напишите плиз о приимуществах и недостатках каждого из них. Помогите пожалуйста разобраться.
|
Цитата:
Цитата:
Цитата:
|
Огромное спасибо! Блин, насколько я понимаю на Delphi вообще игр не поделаешь, даже самых простых. Остается только голимый GLScene! Жаль, просто эта среда разработки мне гораздо ближе чем С. Все же придется писать на С. Благо в сети есть достаточно много книжек по DirectX и С.
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
- OpenGL 1.0 и 1.1 есть во всех системах, чтобы программировать профессионально, используя расширения, качай NVIDIA OpenGL SDK на www.nvidia.com. Последние версии библиотек 10.0 и 2.1. Цитата:
Цитата:
Цитата:
Новейшие расширения OpenGL: - NV_fagment_program4 - NV_geometry_program4 О_о - NV_vertex_program4 ^___^ Цитата:
Цитата:
P. S.: STK, если есть конкретные вопросы под программирования OpenGL приложений - всегда рад помочь, на абстрактные я не отвечаю из принципа, на них должно сформировать собственное мнение, да. Да и с OpenGL Roker больше работает. |
Блин, ты спрашивал как включить? Там где компоненты инклюдишь ( хз как в дельфи ) пишешь #include <GL/gl.h> #include <GL/glu.h> и линковщику даёшь прикурить, а в дельфе просто где модули включаешь, добавляешь ", OpenGL, " и в бой %) больше ничего не надо. То есть в дельфи просто в модкли добавляешь "OpenGL". Если надо, то тебе поможет "краснов Графика в проектах дельфи" - всё понятно, даже новичку. И статьи разные, например
http://www.mirgames.ru/articles/opengl/opengl1.html http://www.mirgames.ru/articles/opengl/opengl2.html http://www.mirgames.ru/articles/opengl/opengl3.html Это можно сказать непрофисиональные статьи, но представление дадут, просто по дельфе ничо нет, только эти. Там сначал с++ код и сразу под ним дельфи. Также, если не хочешь изучать фундаментальные книги советую "уроки от NEHE" - погугли. Есть русский вариант. Также вот тебе ссылки на OpenGL книги: "ОпенГЛ графика в проектах дельфи" http://www.natahaus.ru/2006/05/01/m_...kh_delphi.html и "OpenGL программирование компьютерной графики" - один из фундаментальных трудов http://www.natahaus.ru/2006/02/12/Op...j_grafiki.html Удачи! О_о |
помогите мне в написании простейшего 2д движка и написания на нём простейшей 2д игры. знаю мало и не знаю с чего начать
|
Цитата:
|
а что это вообще такое (DirectDraw) и где про него можно прочитать
|
а просто в в примерах может ктото обьяснить как это вообще делается и действует а так же и про directdraw и наиболее легкий действия с ними для новичков хотящих понять саму суть программирования( если можно то по быстрее)
|
Если Вы не понимаете саму суть программирования, то сначала прогаммировать на C++ выучитесь, а потом только за игры садитесь.
|
нет суть программирования я знаю я просто хочу помотреть как быстрее научится
напишите пожалуйста ссылки на полезные сайты по игровому прог |
www.gamedev.ru, www.gamasutra.com
А вообще, написание игр требет не просто знания программирования, а хорошего знания объектно-ориентированного программирования и умения обучаться по хелпам и примерам. Напиши, на каком языке ты пишешь и что знаешь сейчас, может лучше подскажу, с чего начать. |
я начинал с паскаля и заню его довольно хорошо сейчас занаю синтаксис делфи и VB
|
Цитата:
|
откуда мне можно взять учебник по с++
|
Цитата:
|
ведь можно написать движок и на делфи
расскажите саму суть движка |
Цитата:
Цитата:
Игровой движок (game engine) – ядро программной части игры или другого интерактивного приложения с графикой, обрабатывающейся в реальном времени, не имеющее привязки к конкретной игровой механике. |
это я знаю а хочу понять саму структуру движка как это всё происходит как там существуют запросы как в самом движке реализовать физику
|
Цитата:
Поэтому все что Вам требуется - опыт, прежде всего в объектно-ориентированном программировании и понимании важности этапа планирования. Попробуйте для начала написать простенькую игрушку без написания движка. |
в общем я уже писал простенькую игру по образцу, но понял так себе
|
кстати я закачал учебник с++ но у него формат djvu как его открыть
|
Цитата:
|
А ГДЕ МОЖНО СКАЧАТЬ САМ С++
|
Цитата:
Это есть официально-бесплатно. А если нормальный Visual C++ - то у пиратов или в пиринговых сетях. |
кто нибудь скажите как установить GLSence на делфи (только на русском)
|
Цитата:
Цитата:
|
но всетаки я знаю делфи и пока просто нет времени на с++ так что кто знает как как установить GLSence на делфи (только на русском)
|
Цитата:
Вообще по стандартной установке есть много инфы и делается все это придельно просто! Держи ссылочку. P.S Конечно я как и многие на этом форуме пошлю учить тебя С++ (хотя и сам знаю его не очень хорошо). А вообще если времени на С++ нету, то можешь попробовать связку DirectX SDK и Delphi...сейчас я именно это и пробую. Думаю последнии версии DirectX SDK ты найдешь без проблем. Да и возможностей у него гораздо больше чем у убогого GLScene. Правда придется раскошелиться на книжки по DirectX и Delphi...в инете подобной инфы практичиски не найти. |
большое
спасибо |
Цитата:
Цитата:
Исчерпывающая инфа по DirectX. А уж если после полного понимания описанных в книге вещей, не пропадёт желания дальнейшего изучения, то тут уже можно прикупить и западные книжки на эту тему, благо их довольно много. |
Цитата:
Цитата:
Цитата:
|
А кто нибудь готовые двиги юзает?Например Blitz?
|
| Часовой пояс GMT +4, время: 08:44. |
Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.