|
3D-программирование Вопросы, касающиеся программирования 3D мира |
21.08.2007, 17:53
|
#1
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
DDD Карта Таилами
Всем привет !
вот делаю игровое "поле"
в самой реализации вопросов не возникло ,что то вроде этого
(облегченный вариант)
Type TSquare
Field ent
Field typ%
End Type
Const MSize=16
Dim Map.TSquare(MSize,MSize)
...
СОЗДАНИЕ КАРТЫ:
For y=0 To MSize
For x=0 To MSize
Map.TSquare(x,y)=New TSquare
Map(x,y)\ent=ДЕЛАЕМ КВАД :ScaleEntity Map(x,y)\ent,1.92,1.92,1.92
Map(x,y)\typ% = ЧИТАЕМ ФАИЛ ДЛЯ ТИПА
PositionEntity Map(x,y)\ent,x*12,0,y*12
MoveEntity Map(x,y)\ent,0,Rnd(-2,2),0
....
Next
Next
в чем вопрсос : У Меня при карте 16-16 все нормально ,а вот при 32-32 уже подтормаживает ( : Вообщем как мне ОБЪЕДЕНИТЬ ВСЕ ТАИЛЫ в один меш НО ЧТоб я попрежнему мог обращаться к
каждому объекту по отдельности (чтобы к примеры перекрасить таил в другой цвет) что вроде АддМешь? и сильно ли меня это спасет от лагов ?
и вопрос номер ТУ (он проще):
вот сейчас высота таилов у меня определяется так: MoveEntity Map(x,y)\ent,0,Rnd(-2,2),0
но разброс между таилами по высоте не равномерный!
как мне написать функцию чтобы высота соседних таилов была не значительно (выше\ниже) соседних но разбрасывалсь в диапозоне
чтото вроде этого (пс код ошибок не дает ну чтто особенно ничего не происходит):
|
(Offline)
|
|
21.08.2007, 18:03
|
#2
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: DDD Карта Таилами
задай в типе высоту , а потом делай так:
tile(i,j)\visota = tile(i-1,j-1)\visota+rnd(-5,5) ;так вроде!!
хотя эту строчку можно переделать по удобней !!
|
(Offline)
|
|
21.08.2007, 19:37
|
#3
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: DDD Карта Таилами
)) вопроса ты не понял!
вот при РНД будет у меня так (к примеру : )
1 -5 4 -2
-4 4 1 3
5 2 5 2
1 -2 -1 -5
т.е. эти цифры это высота и как видно соседние не рядом (по высоте!!! )
а мне надо примерно так
0 1 2 1
1 2 3 2
1 1 2 2
2 1 1 1
т.е нет скачка больше че 1! типо плавно!
ну этот вопрос для меня не важен! )
темболее я придумал как это сделать!
потом у меня появилась другая идейка кидать чб бмп фаил 32-32
и читать каждый пиксель чем чернее тем выше (типо карты высот! )
___________
Ктонить на первый вопрос ответит? как мне склеить все объекты чтоб потом я попрежнему мог бы обращаться к каждому по отдельности
И сильно ли это спасет пою производительность
|
(Offline)
|
|
21.08.2007, 19:41
|
#4
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: DDD Карта Таилами
А яж не написал чем твои пример ко мне не подойде
1) он идет только по диагонали)
2) а если сравнивать со всеми соседними вокруг каждого это заимет время ну так вот поэтому я придумал сделать карту высот из бмп фаила
жду ответик на 1-й вопросиг
|
(Offline)
|
|
21.08.2007, 19:42
|
#5
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: DDD Карта Таилами
лучше .raw там нет лишней инфы, кроме цвета пикселя.
|
(Offline)
|
|
21.08.2007, 20:17
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: DDD Карта Таилами
Horror, он тебе подкинул идею, а не реализацию.
По диагонали? А кто мешает складывать все вокруг?:
For x=-1 to 1
For y=-1 to 1
Next
Next
Хм, а ты не пробовал изначально создавать вручную платформы в одном меше?
|
(Offline)
|
|
21.08.2007, 21:05
|
#7
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: DDD Карта Таилами
Изначально так и было! но щас у меня не квады а модельки
вот код
groundmesh=CreateMesh()
...
For x=0 To MSize
For y=0 To MSize
Map.TSquare(x,y)=New TSquare
Map(x,y)\ent=CopyEntity(TILE_MDL) :ScaleEntity Map(x,y)\ent,1.92,1.92,1.92
AddMesh groundmesh ,Map(x,y)\ent
...
ну и вот чтото я не заметил прирост производительности что обидно
и наверника я делаю чтото не так! лечите меня)
|
(Offline)
|
|
22.08.2007, 17:51
|
#8
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: DDD Карта Таилами
У Меня при карте 16-16 все нормально ,а вот при 32-32 уже подтормаживает
|
какая производительность ??
между 16 и 32 разница в 4 раза !! так и должно в принципе подтормозить !!
|
(Offline)
|
|
22.08.2007, 18:08
|
#9
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: DDD Карта Таилами
Не не в этом смысе! я прекрасно понимаю разницу между 16 и 32
просто если делать квадами(два треугольника) то карта 32-32 этоже всегоже 1024 полигона, ну в принципе если я зугружу модель
которая будет в кадре и весить стоко же таких тормазов не будет (проверял)
это видимо из за того что каждый квад это свои мешь
и их надо объединиить !!
вот я их и при создание и создавал вместе (просто к одному мешу все квады приделывал, как МоКа написал !) ну и тормаза исчезли!! я был рад!
но потом я решил что квады не рулят и решил загружать модельку
вот я ее загрузил
и при создание создал пустои мешь и все копии моделек
присоединял командой АддМеш
но тормаза ушли не значительно (
вот и типо спрашивал может я не так АддМешь пишу (кстати никто не оветил, что обидно Ж( .... )
Ну лады у меня щас как я сделал 40-60 фпс думую пока хватит
потом ченить придумаю...
|
(Offline)
|
|
22.08.2007, 18:13
|
#10
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: DDD Карта Таилами
40-60 фпс с 1024 поликами (если я не ошибаюс) - жость !!
здесь действительно что-то не так !!
|
(Offline)
|
|
22.08.2007, 23:49
|
#11
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: DDD Карта Таилами
Дааа,
Выход-
Пополегонка
|
(Offline)
|
|
23.08.2007, 00:50
|
#12
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: DDD Карта Таилами
Чето непоняло?
Все вообщем я дотыкался! у меня терь 70-80 фпс это норм!
приладил дельта таимниг терь всегда 60 и не тормозит
я счаслиФ!
терь новенький вопрос!
Как правельно тыкать в сетку!
т.е не так)
тыкаю я через Пикед ентити
вот я тыкнул по объекты мне терь надо вернуть хандел
чтобы я мог глумиться над этим объектом!
т.е. не так)
сейчас у меня перебор по типу и возращаю пикнутого
но както не катит так ведь перебирать более 1000
елементов в типе - не хорошо (
вот типо как это сделать через Объект-Хандел
исключая полный перебор!
т.е. как то так ..)
Вообщем суть :
При наваодки на объект элемету типу присвоить статус=1
если наводки нет то статус=0
Мне от перебора не уйти? чтоб обратно статус в 0 ? так?
Кто понял этот набор слов жду ответа)
так и знал пить не стоит...
|
(Offline)
|
|
23.08.2007, 11:11
|
#13
|
Бывалый
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений (для 267 пользователей)
|
Re: DDD Карта Таилами
Поятитал тут и не понял после AddMesh используешь FreeMesh? (при AddMesh моделька не просто добавляется, а добавляется с копированием)
|
(Offline)
|
|
23.08.2007, 11:40
|
#14
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: DDD Карта Таилами
А ты уверен?
1) Команды ФрииМеш чета не нашел (тока фриентити)
ну и вот пример
создаем 3 куба и добовляем их к мешу
ну и при удаление изначальных 3-х кубов
ни где не видно что чтото осталось у меша?
может че не так делаю?
Graphics3D 640,480,16,2
cam=CreateCamera()
l=CreateLight()
c1=CreateCube() : PaintEntity c1,CreateBrush(128,1,1) : MoveEntity c1,-2,0,6
c2=CreateCube() : PaintEntity c2,CreateBrush(1,128,1) : MoveEntity c2,0,0,6
c3=CreateCube() : PaintEntity c3,CreateBrush(1,1,12 : MoveEntity c3,2,0,6
mesh=CreateMesh()
AddMesh mesh,c1
AddMesh mesh,c2
AddMesh mesh,c3
Repeat
If KeyHit(1) End
If MouseHit(1) And c1<>0 FreeEntity c1 : c1=0
If MouseHit(2) And c2<>0 FreeEntity c2 :c2=0
If MouseHit(3) And c3<>0 FreeEntity c3 :c3=0
UpdateWorld
RenderWorld
Flip
Forever
|
ПС ПРЕДИДУЩИЙ ВОПРОС ЕЩЕ НЕ РЕШЕН (НЕ БОЛЬНО СТАРАЛСО ))
|
(Offline)
|
|
23.08.2007, 11:58
|
#15
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: DDD Карта Таилами
ВОт так будет правильнее:
ЗЫ выдрал из тутора Scavena
Global Player=CreateSphere()
Plac=CreateCone(8)
RotateMesh Plac,-90,0,0
ScaleMesh Plac,1,1,1.2
PositionMesh Plac,0,0,-1.5
AddMesh Plac,Player
EntityType Player, TypePlayer
EntityColor Player,0,255,0
FreeEntity Plac
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:39.
|