Форум: "Игры";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизGlscene Как создавать TGLFreeForm в рантайме ? Найти похожие ветки
← →
массив (2004-09-09 01:25) [0]Делаю так :
var
B1 : TGLBDCEBody;
F1 : TGLFreeForm;
...
F1 := TGLFreeForm.Create(GLDummyCube1);
B1 := (F1.Behaviours.GetOrCreate(TGLBDCEBody)) as TGLBDCEBody;
B1.Friction := 5;
B1.Shape := csFreeform;
B1.Manager := DCEManager1;
F1.MaterialLibrary := GLMaterialLibrary1;
F1.LoadFromFile("..\..\media\Map.3ds");
F1.BuildOctree;
В результате Map.3ds почему-то невидна. Хотя Octree создаются, и пройти через них нельзя. А из за того, что Map.3ds невидна, то просто упираешься в определённых местах в воздух, и не можешь пройти. В чём я ошибаюсь ?
← →
miek (2004-09-09 08:06) [1]Нужно в свойствах библиотеки указывать texturepaths
← →
kerby (2004-09-09 10:40) [2]F1:=TGLFreeform(GlDummycube1.AddNewChild(TGLFreeform));
with F1 do
begin
//параметры
end;
← →
dimodim (2004-09-09 22:45) [3]
> B1.Manager := DCEManager1;
?
← →
DeadMeat © (2004-09-09 23:57) [4]Это новинка... Недавно внесли... Крутая весчь однако...
---
...Death Is Only The Begining...
← →
массив (2004-09-10 01:44) [5]
> kerby (09.09.04 10:40) [2]
> F1:=TGLFreeform(GlDummycube1.AddNewChild(TGLFreeform));
Спасибо ! Так работает.
> dimodim (09.09.04 22:45) [3]
>
> > B1.Manager := DCEManager1;
>
> ?
Это из демки dceDemo.dpr в папке Demos. Появилась на CVS четыри дня назад.
> DeadMeat © (09.09.04 23:57) [4]
> Это новинка... Недавно внесли... Крутая весчь однако...
Там используется Map.3ds, а я этот файл переделал, сделав в нём
"дверь", и этажи. Теперь можно выходить наружу и подниматься на крышу. :)
Причём работает всё давольно шустро, можно создать микрорайон домов из пятнадцати, создавая их в цикле со сдвигом.
В принципе можно сваять что-то типа Сэма. Огромное плоское пространство, и на нём редкие объекты. Плохо только, что эта штука не поддерживает вращения ( или я просто не нашёл ? ), так, что ГТА с его машинами и мотоциклами сделать неполучится.
Но всё равно это прорыв, которого так долго ждали большевики.
← →
DeadMeat © (2004-09-10 18:34) [6]Какое вращение?
А вообще лучше использовать OpenBSP проект. Там есть компилятор и он может из *.MAP файлов делать *.BSP но своим образом. Также поддерживает карты от Doom3, MultiThreading, RecyleMM и много чего еще будет поддерживать...
---
...Death Is Only The Begining...
← →
массив (2004-09-11 01:13) [7]
> DeadMeat © (10.09.04 18:34) [6]
> Какое вращение?
Вращение автомобиля в процессе катастрофы. Его наклоны при движении по наклонным поверхностям, заносы, прыжки, и прочее.
Это для актёра достаточно только перемещения по трём координатам, а для машины или мотоцикла, нужна ещё физика вращения. Не инерция, а моменты инерции, не скорость, а угловая скорость, и так далее. Понимаешь ?
← →
DeadMeat © (2004-09-11 01:18) [8]Ну тады ODE...
Глянь тут
http://www.k00m.sexidude.com/LastDemo.rar
---
...Death Is Only The Begining...
← →
DeadMeat © (2004-09-11 01:18) [9]Есть еще Newton physics.
Но на него примеров мало...
---
...Death Is Only The Begining...
← →
массив (2004-09-11 05:55) [10]ODE - слишком сложно в использовании. Кода много писать надо, как чего грузить, как сохранять - непонятно.
DCE как раз подкупает простотой.
← →
DeadMeat © (2004-09-11 11:29) [11]Ну в начале да. Но там (у ODE) есть куча примеров...
Да и к тому же встроенный ODE тоже не очень то и плох, вот только глючит его иногда. Зато просто подключать к объектам...
---
...Death Is Only The Begining...
← →
массив (2004-09-12 01:29) [12]Посмотерел
http://www.k00m.sexidude.com/LastDemo.rar
Управление левое, изменить нельзя. Исходника нет. А если бы и был, то коду наверное на мегабайт, как в других демках того же автора. Как он только, бедный, ошибки ищет в таких огромных исходниках ?
А если бы надо было добавить ещё несколько машин ? В общем это путь для героев.
В DCE добавил в элипс модель из ХалфЛайфа, на скорости практически не сказалось. Только выглядит как-то нереалистично. Как будто человек в воздухе висит.
Хочу сделать, чтобы камера не заезжала в стены. Как это делают ? Как можно проверить есть ли между камерой и Актёром посторонние объекты или нет ?
← →
DeadMeat © (2004-09-12 12:08) [13]Насчет гонок, то исходник есть. Если надо, то пиши, я его тебе вышлю... Но там действительно засада...
Сделай ей такой же DCE Behavior...
Только отдельный, чтобы без гравитации...
---
...Death Is Only The Begining...
← →
массив (2004-09-13 01:30) [14]
> DeadMeat © (12.09.04 12:08) [13]
> Насчет гонок, то исходник есть. Если надо, то пиши, я его
> тебе вышлю... Но там действительно засада...
Благодарю, но ненадо. Раз засада, то лень разбираться.
Программы этого автора, на мой взгляд, образцовые примеры неправильного проектирования проэктов. Надо не валить всё в кучу, а по мере нарастания кода, оформлять его в виде отдельных компонентов, да модулей, для удобных работы. Тогда бы получилась некая надстройка над GLScene.
> Сделай ей такой же DCE Behavior...
> Только отдельный, чтобы без гравитации...
А если стена заедет между актёром и камерой ? Думаю лучше сделать вторую камеру на уровне глаз, и если с первой камеры Актёр невиден, то автоматически переключаться на вторую. Только вот как проверить видимость Актёра с камеры пока не знаю.
Чтобы Актёр не казался висящим в воздухе, сделал ему тень. TGLShadowPlane. Только возникают проблемы с прыжками и подениями. Если прыгаешь с небоскрёба, то тень же не должна быть под ногами, а должна быть где-то далеко внизу.
Другая проблема с тенью, если стоишь на наклонной поверхности, то часть тени оказывается внутри неё, и пропадает из виду.
В каких файлах в ХалфЛайфе хранится оружие ? А то модели какие-то безоружные. А в некоторых файлах оружие есть, но оно почему-то вместе с руками.
← →
DeadMeat © (2004-09-13 10:05) [15]
Только вот как проверить видимость Актёра с камеры пока не знаю
Есть такая функция IsVolumeClipped. Так вот с помощью нее можно проверить виден объект или нет.
Ей нужен rcci, который можно получить следующим образом:
1) Ставишь перед объектом TGLDirectOpenGL
2) В его OnRender берешь rci.rcci и передаешь в IsVolumeClipped
В каких файлах в ХалфЛайфе хранится оружие ? А то модели какие-то безоружные. А в некоторых файлах оружие есть, но оно почему-то вместе с руками
Ой... Щас точно не помню. Приду домой гляну...
А насчет того, что вместе с руками, так это для вида от первого лица...
Глянь мою демку с конкурса по Paratrooper на http://code.rpro.ru
Там я использовал одну из моделек...
← →
DeadMeat © (2004-09-13 10:06) [16]По поводу теней.
Есть два варианта:
1) TGLVolumeShadows
2) Отключай GL_DEPTH_TEST перед рисованием тени. Хотя это намного тяжелее сделать...
← →
массив (2004-09-14 02:04) [17]
> DeadMeat © (13.09.04 10:05) [15]
>
> Только вот как проверить видимость Актёра с камеры пока
> не знаю
>
> Есть такая функция IsVolumeClipped. Так вот с помощью нее
> можно проверить виден объект или нет.
> Ей нужен rcci, который можно получить следующим образом:
> 1) Ставишь перед объектом TGLDirectOpenGL
> 2) В его OnRender берешь rci.rcci и передаешь в IsVolumeClipped
Оказывается можно проще :Caption := (GLSceneViewer1.Buffer.GetPickedObject(GLSceneViewer1.Width div 2, GLSceneViewer1.Height div 2) as TGLCustomSceneObject).Name;
Только возникает проблема. Когда Актёр прыгает, то он уходит из центральной точки GLSceneViewer"а.
> DeadMeat © (13.09.04 10:06) [16]
> По поводу теней.
> 2) Отключай GL_DEPTH_TEST перед рисованием тени. Хотя это
> намного тяжелее сделать...
А где он там отключается в TGLShadowPlane ?
> 1) TGLVolumeShadows
Если речь о TShadowVolume, то тормозит он.
> Глянь мою демку с конкурса по Paratrooper на http://code.rpro.ru
Что-то не нашёл там. Только условия конкурса. Какой прямой линк ?
Где бы надыбать домов, всяких, стен, башен, мостов, и прочих сооружений ? Чтобы там треугольников поменьше было.
И каким бы редактором эти объекты на карте расставить ?
← →
DeadMeat © (2004-09-14 19:51) [18]
> Какой прямой линк ?
http://code.rpro.ru/konkurses/paratrooper.rar
> А где он там отключается в TGLShadowPlane ?
В принципе он сам оключается в NoZWrite.
Можно еще сделать glDisable (GL_DEPTH_TEST) в его обработчике OnBeginRenderingShadows и вернуть (glEnable (GL_DEPTH_TEST) в OnEndRenderingShadows.
Еще как вариант поставить перед ним и после него TGLDirectOpenGL и в нем сделать тоже самое...
Сложность заключается в том, что все это надо скомпоновать с другими элементами сцены...
---
...Death Is Only The Begining...
← →
массив (2004-09-15 01:39) [19]Насчёт изготовления пуль - непойму, как сделать, чтобы на них не действовала гравитация ? А то падают они у меня на землю, почти сразу после выстрела.
Приложить же силу противоположенную гравитации - не пойму как.
Или как вообще должны выглядеть выстрелы ? Можно как в Сэме, с медленно летящими пулями, а можно как в GTA, с просто тёмными полосками - следами выстрелов. Как лучше ?
В ГТА реалистичнее, но увернуться от такого выстрела - невозможно.
← →
массив (2004-09-17 04:53) [20]
> DeadMeat © (14.09.04 19:51) [18]
>
> > Какой прямой линк ?
>
> http://code.rpro.ru/konkurses/paratrooper.rar
Там оказывается все демки, которые им присылали. А я сразу не понял. Запустил какую-то, там коровки бегают, запустил другую, там что-то типа паратрупера, вообще позор. Думаю, зачем это ?
А тут решил ещё раз, посмотреть и понял в чём дело. :) В конкурсе победил паратрупер. :)))))
Кстати, у тебя дым от выстрела тормозит. Где то от 200fps до 30. Это можно как-нибудь улучшить ? А так вообще не плохо.
← →
DeadMeat © (2004-09-17 17:10) [22]Конечно можно...
В настройках есть все... (ну или почти все)
---
...Death Is Only The Begining...
← →
массив (2004-09-18 01:15) [23]
> DeadMeat © (17.09.04 17:10) [22]
Небольшой совет.
Ты пишешь :if (updatepower=true) and ...
А между тем это-же можно записать и так:if updatepower and
Экономия в семь ненужных символов. Сама фраза "= True" просто не имеет смысла. Это как прибавлять ноль или умножать на единицу.
← →
DeadMeat © (2004-09-18 14:19) [24]Да знаю, знаю... Мне многие это говорят. Но я просто привык. Да и на взгляд, сразу видно... ;)
Привычка - дело страшное... У меня там еще много таких косяков...
---
...Death Is Only The Begining...
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.034 c