forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   терайн глючный (http://forum.boolean.name/showthread.php?t=1551)

Timon 23.09.2006 22:31

терайн глючный
 
значить есть терайн и всё нормально пока не пойдёт камера, как только она пойдёт терайн начинает непонятно менять форму, делаю детайл повыше-естно фпс падает>O< .
как отминить эти изгибания терайна без потери фпс(ну хотябы с небольшой потерей:wallbash: )

jimon 23.09.2006 22:33

Re: терайн глючный
 
ты о чем ?

Diplomat 23.09.2006 22:38

Re: терайн глючный
 
2 Timon : Это не баг, это фича. А вообще, лучше юзать террайны, сгенерированные повертексно, или смоделенные в Мах-е: можно повысить качество изображения, производительность и стабильность.

Timon 24.09.2006 16:07

Re: терайн глючный
 
to Jimon эт я о том что при приближении к терайну или отдалении от него его вертексы изменяют свою позицию(ну типа NOISE из 3ДС МАХ) а если ещё и поставить morph на true то ваще "прикольно" получется
TerrainDetail terr,5000,True:wallbash: :wallbash: :wallbash:

а если сделать в МАХе то помоему не получиться деформировать этот террайн, ну типа как в castle.bb

jimon 24.09.2006 16:25

Re: терайн глючный
 
они и должны изменять свою позицию :) dinamic LOD называется вроде :)

Diplomat 24.09.2006 16:37

Re: терайн глючный
 
Цитата:

dinamic LOD называется вроде
ІЫгы, dynamic... :))

Цитата:

а если сделать в МАХе то помоему не получиться деформировать этот террайн, ну типа как в castle.bb
А если сделать повертексно, то очень-на лЁхко получится. Впрочем, и в случае с Мах-ом получится, только нужно будет перед запуском в цикл провести анализ координат каждого вертекса.

Когда-то я создавал соответствующую тему. А РАХ ёё развивал. Называется "Веселые секреты". Размещена в ФАК-е.

Исчи, ведь поесг- ёто сила,
И знаний развернутся крыла,
Влекут нас к дальним берегам.
Террайн наградой станет нам...
:-)

Timon 24.09.2006 17:27

Re: терайн глючный
 
thanks i'm going to find it!!!

Timon 26.09.2006 20:47

Re: терайн глючный
 
в факе она не работает.
а можна в блитзе из террайна сделать меш, и отменится ли прои этом DynamicLOD???

HolyDel 27.09.2006 01:16

Re: терайн глючный
 
все можно, но FPS потеряеш больше чем при самой большой детализации террайна.

Diplomat 27.09.2006 01:55

Re: терайн глючный
 
Цитата:

FPS потеряеш больше чем при самой большой детализации террайна.
"Пони? Обоснуйте..."(с)

MiXaeL 27.09.2006 22:54

Re: терайн глючный
 
Вложений: 2
На самом деле меш, как я понимаю, сделать нельзя (на этом и основан Dynamic LOD - типа отображение террайна с меньшим кол-вом полигонов), но можно попробовать что - то вроде этого (за качество не отвечаю - писал на скорую руку):

Timon 28.09.2006 11:08

Re: терайн глючный
 
спасиб, буду юзать!

Diplomat 28.09.2006 12:57

Re: терайн глючный
 
2 Michael: Может я чего-нибудь не понимаю, но в твоем примере террайн является типичнейшим мешем (который "сделать нельзя"?), созданым повертексно. А пример- хороший. По сути соответствует тому коду, который приводил РАХ в вышеуказанной мною теме. Только раскраска вертексов не предусмотрена. :-)

А для создания таким образом больших террайнов существует несколько давно изобретенных и проверенных метода:

а). Разделять большой террайн на квадраты из нескольких маленьких: полигоны не зашкалят за критические 65000, а при передвижении камеры, невидимые террайны-квадраты будут отсекаться Блицем.

б). Поместить карту высот в массив и при передвижении "переставлять" удаленные террайны-квадраты туда, куда движется камера и корректировать их в соответствии с картой высот. Достаточно 9-ти штук: 1- над которым камера, 8- вокруг.

Усё.

HolyDel 29.09.2006 01:52

Re: терайн глючный
 
Так например можно получить mesh из террайна

Function MakeMeshFromTerrain(t)
size=TerrainSize(t)
m=CreateMesh()
s=CreateSurface(m)
For j=0 To size-1
For i=0 To size-1
v0=AddVertex(s,i,TerrainHeight(t,i,j),j,0,0)
v1=AddVertex(s,i+1,TerrainHeight(t,i+1,j),j,1,0)
v2=AddVertex(s,i,TerrainHeight(t,i,j+1),j+1,0,1)
AddTriangle(s,v0,v1,v2)
v0=AddVertex(s,i+1,TerrainHeight(t,i+1,j),j,1,0)
v1=AddVertex(s,i+1,TerrainHeight(t,i+1,j+1),j+1,1, 1)
v2=AddVertex(s,i,TerrainHeight(t,i,j+1),j+1,0,1)
AddTriangle(s,v0,v1,v2)
Next
Next
UpdateNormals m
FlipMesh m
Return m
End Function

jimon 29.09.2006 10:25

Re: терайн глючный
 
тогда такое надо делать только при максимальной детализации терайна ...

Timon 29.09.2006 12:01

Re: терайн глючный
 
ух нифига себе. пойду учить написанное!!!
а почиму макс.детализация, собсно?

MiXaeL 29.09.2006 22:34

Re: терайн глючный
 
2 Timon:
Цитата:

спасиб, буду юзать!
Юзай кнопочку Thanks

pax 29.09.2006 23:00

Re: терайн глючный
 
Цитата:

Сообщение от HolyDel
Так например можно получить mesh из террайна

Function MakeMeshFromTerrain(t)
size=TerrainSize(t)
m=CreateMesh()
s=CreateSurface(m)
For j=0 To size-1
For i=0 To size-1
v0=AddVertex(s,i,TerrainHeight(t,i,j),j,0,0)
v1=AddVertex(s,i+1,TerrainHeight(t,i+1,j),j,1,0)
v2=AddVertex(s,i,TerrainHeight(t,i,j+1),j+1,0,1)
AddTriangle(s,v0,v1,v2)
v0=AddVertex(s,i+1,TerrainHeight(t,i+1,j),j,1,0)
v1=AddVertex(s,i+1,TerrainHeight(t,i+1,j+1),j+1,1, 1)
v2=AddVertex(s,i,TerrainHeight(t,i,j+1),j+1,0,1)
AddTriangle(s,v0,v1,v2)
Next
Next
UpdateNormals m
FlipMesh m
Return m
End Function

С этой функцией каждый квад получает текстурные координаты равные концам текстуры, что очень неудобно, плюс самая неоптимальная генерация ландшафта: по три вертекса на треугольник! Такой террейн тормозить будет... надо хотябы использовать по четыре вертекса на квад если хотите использовать тайловый ландшафт... если же тайловый ландшафт не требуется, то используйте мою функцию для генерации ландшафта, она находится вот в этой теме (про нее Diplomat говорил ;) ): http://www.boolean.name/showthread.php?t=154

Timon 29.09.2006 23:10

Re: терайн глючный
 
пойду смотреть тему
PS в след. раз буду юзать ThanksButton!!!!!!!!


Часовой пояс GMT +4, время: 06:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot