Author Topic: Вопросы и ответы по движку  (Read 4238 times)

0 Members and 1 Guest are viewing this topic.

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 303
  • Reputation 23
  • Lokemundux Desco Domus Shaantitus
Re: Вопросы и ответы по движку
« Reply #90 on: October 13, 2015, 06:13:31 AM »
Еще по поводу возможных оптимизаций разговор был тут:http://worldsim3d.com/Forum/index.php?topic=177.0

Тема интересная, многое уже перепробовал до прочтения оной. В частности, проверял обрабатываются ли невидимые ноды. Эта проблема в будущем, надеюсь, решится с переходом на новый иррл (который тоже, надеюсь, свершится).
Также заинтересовала фраза:
Code: [Select]
У нас есть собранная нами 32-битная версия движка на Ирле 1.8.0 (на 1.9 еще руки не дошли попробовать).
В ней соответственно появляется поддержка форматов  mdl, wal и smf
Формат mdl, мне думается, гораздо популярней всяких b3d и проблем с ним не должно возникнуть...
Crudux Cruo!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #91 on: October 13, 2015, 07:45:42 AM »
Quote
У нас есть собранная нами 32-битная версия движка на Ирле 1.8.0 (на 1.9 еще руки не дошли попробовать).
В ней соответственно появляется поддержка форматов  mdl, wal и smf
Уже утеряна: жесткий сгорел месяца 3 назад. Но это не проблема: за вечер/другой соберем. Я ведь говорил, что надо в исходниках лазить, у нас НЕ оригинальная длл-ка ирла.Вот закончу с bsp-картами, займусь. Там, кстати, оказывается, вместе с шейдерами самостоятельно грузятся модели из папки /maps/models/mapobjects.
Это лампы,которые горят на стенах в некоторых картах.....
Хочу проверить, что еще грузится САМО или можно загрузить, считав карту. Выдернул из Quake3 парочку единиц оружия и господина Major.
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #92 on: October 13, 2015, 02:10:57 PM »
Quote
Обратился к оригиналу. Закинул код в примеры иррла 1.7.3. Туда же модель сферы и шрифт. Исправил пару несоответствий в типах (судя по дате- 2008 г, делалось на иррле 1.5) Скомпилировал.......ВЫЛЕТАЕТ!!!
Закинул код в чистый иррлих 1.8.3, скомпилировал- оно работает вроде.
Буду разбираться дальше.......
Но, даже если оно и работает, то как с этим обращаться?
Ведь изображение выводится на экран с помощью
Code: [Select]
driver->drawMeshBuffer(buffer);Никаких мешей и тем более НОД не создается. Как ЭТО устанавливать в позицию, поворачивать, масштабировать и прочее.... Пока не ясно...
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #93 on: October 13, 2015, 02:24:09 PM »
Quote
Хочу проверить, что еще грузится САМО
Похоже, ничего.
Что можно самим: все, что угодно.
Под лежачий камень мы всегда успеем...

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 303
  • Reputation 23
  • Lokemundux Desco Domus Shaantitus
Re: Вопросы и ответы по движку
« Reply #94 on: October 13, 2015, 03:29:31 PM »
Смотрю на скриншот и возникает вопрос - это что, модель md3? WS3D поддерживает формат .md3?
Crudux Cruo!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #95 on: October 13, 2015, 05:44:27 PM »
Наверное, ответ уже не требуется, но все-таки отвечу:
Quote
Поддерживаемые форматы для моделей:

Animated objects:

B3D files (.b3d, r, skeleton)
Microsoft DirectX (.x, r) (binary & text, skeleton)
Milkshape (.ms3d, r, skeleton)
Quake 3 models (.md3, r, morph)
Quake 2 models (.md2, r, morph)


Static objects:

Irrlicht scenes (.irr, r/w)
Irrlicht static meshes (.irrmesh, r/w)
3D Studio meshes (.3ds, r)
Alias Wavefront Maya (.obj, r/w)
Lightwave Objects (.lwo, r)
COLLADA 1.4 (.xml, .dae, r/w)
OGRE meshes (.mesh, r)
My3DTools 3 (.my3D, r)
Pulsar LMTools (.lmts, r)
Quake 3 levels (.bsp, r)
DeleD (.dmf, r)
FSRad oct (.oct, r)
Cartography shop 4 (.csm, r)
STL 3D files (.stl, r/w)
PLY 3D files (.ply, r/w)

На скрине- plasma gun- положение "считано" из bsp- карты.
« Last Edit: October 13, 2015, 05:47:50 PM by nikolas »
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #96 on: October 14, 2015, 08:52:55 PM »
Ахтунг, камрады!
Обнаружился мегабаг в работе wAddQ3LevelToScene.
Мой баг, но он навеян непрозрачным примером 16 из туториалов иррлихта. Памятуя о том, что у нас тут не C++ форум, скажу словами суть:
При загрузке BSP-меша сначала создается обычный нод (на выбор: октрее или нет). Затем из меша "вытаскиваются" мешбуфферы, являющиеся кандидатами на применение к ним Q3-шейдеров. Что потом? Из КАЖДОГО такого мешбуффера+ Q3-шейдер  формируется новый нод. В 16 примере было показано применение всего цикла создания к ОДНОЙ и той же ноде (что, собственно, я не учел). Т.е. старый УКАЗАТЕЛЬ затирался, записывался новый. В С++ такая практика есть. К чему это приводит: функция возвращает указатель НЕ НА октрее/меш-нод, создаваемый вначале, а на последний Q3-нод, созданный из ПОСЛЕДНЕГО в списке мешбуффера и последнего шейдера.
Из-за этого не работали функции поворота, перемещения, масштабирования, применения материалов/флагов ПРИМЕНИТЕЛЬНО к НОДУ (BSPNode).

Частично исправлено. Теперь функция возвращает именно нод, содержащий BSP-меш. Теперь вопрос: что делать с кучей безымянных нод, которые порождаются этой функцией. То, что они есть, видно на скрине: применена команда:
Code: [Select]
wSetNodeVisibility(BSPNode,0)Эти ноды остались видны. 
Первоначально мысли такие: не заморачиваться, как сделали в примере 21 Q3 Map Explorer (перед загрузкой уровня очищается сцена от всех старых нод). Не очень удобно, нужно пересоздавать хотя бы камеру и еще что. Можно удалять эти ноды вручную, отлавливая по ТИПУ (благо, теперь есть возможность).
Это придется делать всегда перед загрузкой НОВОЙ карты.

PS По этой же причине (неверно возвращаемый указатель) в предпоследней редакции нельзя было сделать ФИЗИЧЕСКИЙ УРОВЕНЬ (имеется в виду тримеш).

Официального релиза этой функции еще не было, так что не будем считать это багом, просто процесс разработки. Жду предложений.
« Last Edit: October 14, 2015, 11:13:41 PM by nikolas »
Под лежачий камень мы всегда успеем...

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #97 on: October 14, 2015, 10:26:25 PM »
Проверил.
Повесил эту простенькую функцию на клавиши F1 и F2
Code: [Select]
Sub HideShadersNode(ByVal value As integer)
Dim As wNode root=wGetRootSceneNode ( )
Dim As Any ptr position
Dim As wNode node= wGetNodeFirstChild ( root, position )
       Dim i As Integer
While wIsNodeLastChild ( root, position ) <>1
node=wGetNodeNextChild ( root,position )
If wGetNodeType(node)=wSNT_Q3SHADER_SCENE_NODE Then
Print *wGetNodeName(node)
wSetNodeVisibility(node,value)
EndIf
        Wend
End Sub
При F1- все шейдерные ноды прячутся, F2-появляются. Любопытно получается...

Еще выяснил следующее: все  мешбуфферы, содержащие одинаковые сетки, объединяются в один нод. На скрине включена отладочная габаритная коробка
всех фонарей, свисающих с потолка на данной карте. Нод- один. Всего шейдерных нод на этой карте: 5. Два- для различного вида фонарей, один- для текстуры лавы внизу уровня и пара- для огня в лампах.
Если не назначать этим нодам имена искусственно, они принимают имена моделей/текстур, откуда они загружены.
« Last Edit: October 14, 2015, 11:08:17 PM by nikolas »
Под лежачий камень мы всегда успеем...

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 857
  • Reputation 32
  • Game making is my hobby for life!
Re: Вопросы и ответы по движку
« Reply #98 on: October 15, 2015, 07:17:56 PM »
Посмотрел. Интересно. Скоро можно уже будет свой Квейк делать.  :)
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #99 on: November 17, 2015, 07:47:41 PM »
Quote
Врапнул из примера алгоритм Per Face Culling. Осталось набросать примерчик и проверить, что вышло
Оптимизация PerFaceCulling  частично реализована. Не тестировалась только на BSP-картах. Подробности тут: http://worldsim3d.com/Forum/index.php?topic=214.msg1959#msg1959
« Last Edit: November 17, 2015, 10:17:18 PM by nikolas »
Под лежачий камень мы всегда успеем...

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 303
  • Reputation 23
  • Lokemundux Desco Domus Shaantitus
Re: Вопросы и ответы по движку
« Reply #100 on: January 18, 2018, 09:22:54 AM »
Привет. У меня назрела пара вопросов:
1. возможно ли ограничить угол поворота фпс камеры по вертикали?
2. возможно ли запретить поворот билбордов (спрайтов) по вертикали?
Crudux Cruo!

Offline Nikolas - WS3D Developer

  • Programmer
  • Global Moderator
  • Viscount
  • *
  • Posts: 761
  • Reputation 51
Re: Вопросы и ответы по движку
« Reply #101 on: January 18, 2018, 12:30:29 PM »
Сначала напишу по предыдущему посту.
Я тут в хелпе иррла нашел любопытную вещь:
 для камер можно назначать матрицу проекции, а матрице можно задать вид.  Там есть и right-handed, и left-handed.

Quote
возможно ли ограничить угол поворота фпс камеры по вертикали? 
Сразу скажу, готовых функций доступа к углам нет.  Но все возможно, если надо.
Скорее всего, это будет не в самой камере, а в ее аниматоре, так как фпс камера=обычная камера+ фпс-аниматор. Я уже делал несколько функций доступа для фпс камер: изменение скорости перемещения поворота и прочее. Готовых методов изменения углов не видел, но видимо можно добавить.

В стандартной фпс-камере уже есть ограничение. От -90 до +90 по вертикали. Или около того. Тебе нужны другие значения?

Про биллборды уточню.

« Last Edit: January 18, 2018, 01:11:43 PM by Nikolas - WS3D Developer »
Под лежачий камень мы всегда успеем...

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 303
  • Reputation 23
  • Lokemundux Desco Domus Shaantitus
Re: Вопросы и ответы по движку
« Reply #102 on: January 18, 2018, 02:48:40 PM »

Quote
В стандартной фпс-камере уже есть ограничение. От -90 до +90 по вертикали. Или около того. Тебе нужны другие значения?
Я хочу произвольные углы. Допустим -20 +20. В любом случае было бы хорошо иметь такие функции.
Мне просто надо понять - делать самому класс камеры или можно стандартными функциями обойтись ))
Crudux Cruo!

Offline ALex98

  • Commoner
  • *
  • Posts: 13
  • Reputation 2
Re: ??????? ? ?????? ?? ??????
« Reply #103 on: February 22, 2018, 01:04:42 AM »
Всем привет) Хочется узнать насчёт ветки на сях. Я так понял на них уже можно делать кое какие проекты. Если можно , то где можно достать эту ветку?
« Last Edit: February 22, 2018, 01:19:43 AM by ALex98 »

Offline Vuvk

  • Friends
  • Baron (-ess)
  • *
  • Posts: 303
  • Reputation 23
  • Lokemundux Desco Domus Shaantitus
Re: Вопросы и ответы по движку
« Reply #104 on: February 22, 2018, 09:52:00 AM »
Привет, Alex98. Есть заголовок для С/С++, в котором почти нет комментариев и потому без примеров будет сложно разобраться. А примеры перенесены далеко не все. Даже наверное половины нет из 130. ::)
Каюсь, я было начал помогать с переносом примеров, а потом назрел тотальный пересмотр API и все наработки оказались по сути бесполезными. Разрабам не хватает поддержки извне.
На данный момент я разрабатываю конструктор игр на движке WS3D (использую чистый Си), Nikolas ваяет игру на С++. Так что могу сказать точно - оно работает.
Crudux Cruo!