Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 27.06.2011, 00:00   #1
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Имитация водной поверхности.

Подобрал уравнения деформирующие плоскость. Пока сильно подтормаживает, но это от апдэйта нормалей. Вроде красиво изгибает меш.

Последний раз редактировалось dsd, 10.08.2011 в 03:06.
(Offline)
 
Ответить с цитированием
Эти 12 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
Amatsu (27.06.2011), Android (28.06.2011), ARA (27.06.2011), Arles (29.06.2011), Coks (30.06.2011), FREE MAN (27.06.2011), maxturbo (27.06.2011), Mr_F_ (27.06.2011), Nex (27.06.2011), Program23 (27.06.2011), Randomize (27.06.2011), St_AnGer (27.06.2011)
Старый 27.06.2011, 00:03   #2
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Имитация водной поверхности.

1. Почему нет кода ?
2. Это будет всегда подтормаживать, так-что не юзабельно, разве что если у тебя в игре будет только вода и одна лодочка.
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 00:07   #3
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Имитация водной поверхности.

Эффектно, завороженно смотрел на поверхность минут 5.
AMD X2 6000+, 4Gb ОЗУ, HD4770 - стабильно 70-75 фпс
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Amatsu за это полезное сообщение:
Colossus (27.06.2011), Reizel (27.06.2011), Wegox (08.04.2012)
Старый 27.06.2011, 00:15   #4
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

Тю, по опыту сдесь код выходящий за рамки кода в справке не анализирут :D
Но вот:
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
Dither 0
Dim plane#(0,0)
Dim noise#(0)
Global pivot,camera,mxs#,mys#,Light,timer3

Const gravitation#=9.8

pivot=CreatePivot()
PositionEntity pivot,0,3,-10
camera=CreateCamera(pivot)
CameraClsColor camera,0,75,151
light=CreateLight()
MeshLight=CreateSphere(6,light)
;ScaleMesh meshlight,0.3,0.3,0.3
EntityFX meshlight,1
AmbientLight 15,15,15

mesh=CreateWaterPlane(36,36,3,3)
PrepareWaterData(mesh)

While Not ((KeyDown(56) And KeyHit(62)) Or (KeyHit(56) And KeyDown(62)) Or KeyHit(1))
timer3=MilliSecs()
PointEntity light,mesh
PositionEntity light,25*Sin(MilliSecs()/30),25,25*Cos(MilliSecs()/30)
UpdateWaterPlane(0.5,0.2,0.7,mesh)
UpdateWorld
RenderWorld
control(0.5,1.4)
Text 200,200,noise#(Rand(0,200))
Flip 0
Wend
End


Function UpdateWaterPlane(windx#,windy#,windz#,meshhandle)
mesh=meshhandle
meshsurf=GetSurface(mesh,1)
qvert=CountVertices(meshsurf)
For i=0 To qvert-1
x00#=plane#(i,0)
y00#=plane#(i,1)

z01#=8*Cos(MilliSecs()/10+x00*3)+6*Sin(MilliSecs()/35+y00*1.5)+0.5*Sin(noise#(i)+MilliSecs()/4)
x01#=x00-8*Cos(MilliSecs()/10+x00*3)+0.5*Cos(noise#(i)+MilliSecs()/
y01#=y00-6*Sin(MilliSecs()/25+y00*2)+0.5*Sin(noise#(i)+MilliSecs()/4)
VertexCoords meshsurf,i,x01,z01,y01
Next
UpdateNormals mesh
End Function

Function PrepareWaterData(meshid)
mesh=meshid
meshsurf=GetSurface(mesh,1)
qvert=CountVertices(meshsurf)
Dim plane#(qvert,3)
For i=0 To qvert-1
plane#(i,0)=VertexX(meshsurf,i)
plane#(i,1)=VertexZ(meshsurf,i)

Next
End Function

Function CreateWaterPlane(width,depth,gridx#,gridy#)
mesh=CreateMesh()
meshsurf=CreateSurface(mesh)
b=width
d=depth
For y=-d To d
For x=-b To b

v0=AddVertex(meshSurf,x*gridx,0,y*gridy)
VertexNormal (meshsurf,v0,0,1,0)
Next
Next

qvert=CountVertices(meshSurf)

For i=0 To qvert-1
v0=i
x0#=VertexX(meshSurf,V0)
y0#=VertexZ(meshSurf,V0)

bize=i+3*b
If bize>qvert-1 Then bize=qvert-1

For z=i To bize
If (VertexX#(meshSurf,z)-gridx=x0#) And (VertexZ#(meshSurf,z)=y0#) Then v1=z
If (VertexX#(meshSurf,z)=x0#) And (VertexZ#(meshSurf,z)-gridy=y0#) Then v2=z
If (VertexX#(meshSurf,z)-gridx=x0#) And (VertexZ#(meshSurf,z)-gridy=y0#) Then v3=z
Next

If v0<>v1 And v2<>v3 Then AddTriangle(meshsurf,v1,v0,v2) : AddTriangle(meshsurf,v3,v1,v2) :v1=v2=v3=0
Next

For i=0 To qvert-1
x00#=VertexX(meshsurf,i)
y00#=VertexZ(meshsurf,i)
u00#=x00/(width*gridx)
v00#=y00/(depth*gridy)
VertexTexCoords meshsurf,i,u00,v00

Next

Dim noise#(qvert)
For i=0 To qvert-1
noise#(i)=Rnd(0,359.99)
Next

testtex=CreateTexture(256,256,256)
SetBuffer TextureBuffer(testtex)
Color 127,127,127
Rect 0,0,128,128
Rect 128,128,128,128
Color 235,240,235
Rect 0,128,128,128
Rect 128,0,128,128
SetBuffer BackBuffer()
EntityTexture mesh,testtex,0,0
ScaleTexture testtex,.1,.1


Return mesh
End Function

Function control(speed#,mousesensitivity#)
If KeyDown(2) WireFrame True Else WireFrame False
mxs#=mxs#+(MouseXSpeed()/5.0)
mys#=mys#+(MouseYSpeed()/5.0)
RotateEntity camera,mousesensitivity#*mys#,-mousesensitivity#*mxs#,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
If KeyDown(17) Or KeyDown(200) MoveEntity camera,0,0,speed#
If KeyDown(31) Or KeyDown(20 MoveEntity camera,0,0,-speed#
If KeyDown(30) Or KeyDown(203) MoveEntity camera,-speed#,0,0
If KeyDown(32) Or KeyDown(205) MoveEntity camera,speed#,0,0
PositionEntity pivot,EntityX#(camera,1),EntityY#(camera,1),Entity Z#(camera,1)
PositionEntity camera,0,0,0


Text 100,10,"polygons in view "+TrisRendered()
If (MilliSecs()-timer3)<>0 Text 100,40,"Frames per second is: "+1000/(MilliSecs()-timer3)
End Function

Пока просто лениво считать нормали к точкам, без апдейта это в 5-6 раз резче, плюс можнозамутить перерисовку меша по типу террэйна. Только зачем мне это в пародии на МОО :D
Это эскиз вообще без оптимизации.
1-wireframe

Последний раз редактировалось dsd, 10.08.2011 в 03:06.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
Amatsu (27.06.2011), Arton (17.02.2017), FREE MAN (27.06.2011), NitE (27.06.2011), St_AnGer (27.06.2011)
Старый 27.06.2011, 00:20   #5
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Имитация водной поверхности.

да ) неплохо ) вот еще сделать красивую водную поверхность, и постэффекты, и получится шикарно )
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 00:28   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Имитация водной поверхности.

автор, переходи на dx9+ движки, вертексными шейдерами не будет тормозить)
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
ARA (27.06.2011), maxturbo (27.06.2011), moka (27.06.2011), St_AnGer (27.06.2011)
Старый 27.06.2011, 00:36   #7
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений
(для 7,192 пользователей)
Ответ: Имитация водной поверхности.

Исчо вариант - убрать мелкую рябь, уменьшить полигонаж воды раз в 5. а рябь заменить ревлективным/рефрактивным бампом из FastExt или Ashadow)
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 00:37   #8
maxturbo
Разработчик
 
Аватар для maxturbo
 
Регистрация: 19.05.2009
Адрес: Россия Иркутская область
Сообщений: 350
Написано 51 полезных сообщений
(для 66 пользователей)
Ответ: Имитация водной поверхности.

У автора просто видать хобби... Как и все остальные он пытается из не возможного делать реальные вещи и при чем это получается довольно таки не плохо
__________________
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 00:47   #9
Program23
Бывалый
 
Аватар для Program23
 
Регистрация: 26.04.2009
Адрес: Россия, Уфа
Сообщений: 680
Написано 182 полезных сообщений
(для 406 пользователей)
Ответ: Имитация водной поверхности.

Класс!По-истине релаксирующая водичка,еще бы текстуру натянуть,песчаный берег,крабик,камешек,ракушка,дельфиничика,чаек,пен у от разбивающихся об брег волн...
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 00:58   #10
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Имитация водной поверхности.

Сообщение от Program23 Посмотреть сообщение
Класс!По-истине релаксирующая водичка,еще бы текстуру натянуть,песчаный берег,крабик,камешек,ракушка,дельфиничика,чаек,пен у от разбивающихся об брег волн...
Думаю от таких волн на пляжике не останется ни крабиков, ни ракушек. Волны явно штормовые, причем вдали от берега
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Wegox (08.04.2012)
Старый 27.06.2011, 01:02   #11
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

Хм. Где то читал, что уровень графики современных игр должен быть посильным для первых пней если код будет правильный ))

С++ мне тяжело. Пуре бэйсик с отвратительной справкой по командам. Плюс за месячишко мне блитц не надоел . Я пока даже не дошел до коллизий В блитце мне не хватает только нормальной скорости в рисовании, ведь даже простого анализа изображения не замутить

А над этим надо думать(я про воду). В основном надо придумать хитрую функцию меша. Потому как этим уравнениям фиолетов уровень детализации, просто частую сетку оно изогнет разнообразней, оно как фрактал Надо только уравнения подобрать, что бы волны в бублик скручивало.
И потом при желании транслировать алгоритм в другой язык элементарно По моему я щас работаю практически с опенжлом

И да, скоро я буду вспоминать термех :D

Это просто волны, когда выведу коэффициенты можно будет имитировать от ряби до шторма И надо еще с логарифмами и тангенцами поэксперементировать
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 01:34   #12
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Имитация водной поверхности.

dsd с АВТОМАТ-ом могли бы сделать "Минекрафт получше"
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 02:01   #13
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Имитация водной поверхности.

dsd, дык, под Blitz3D, есть Xors3D - а там есть и шейдеры. А они позволяют в функции вершинного шейдера, в реальном времени изменять позицию и любые другие параметры вершин со сложными формулами с очень отличной производительностью (на то и шейдеры).
И в современных играх, используют именно их.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
NitE (27.06.2011)
Старый 27.06.2011, 02:08   #14
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

;нужно сделать что бы в зоне видимости камеры была плоскость.
; А вне зоны ее не было. Отсечение ненужного легко решается задачей четырех плоскостей отгораживающих невидимое
; уравнение плоскости ax+by+cz=0 d не нужно так как плоскость проходит через начало координат
; Нужно в координатах камеры найти линии пересечения плоскости воды и клипплэйнов. Это первый этап. Видимость точки определяется легко потому как нормаль имеет длину 1 а уравнения плоскостей приведены к нормальному виду и расстояние от точки до поверхностей считается легко
;
;Этап второй нужным образом а именно линиями расположенными перпендикулярно нормальному вектору связывающему точку проецирующий на камеру в graphicswidth().2 и последовательно расположенную высоту имею рассчитываемые координаты точек, которые перевожу в координаты меша
; Чем дальше от камеры тем шире ряды.
;Рассчитываю полученные из ничто исходные координаты точек меша, считаю новые ставлю точки в полученные натягиваю сюрфэйс. Хитрым финтом для каждой точки из уравнения извлекаю нормаль
;ставлю нормаль. Придумываю как завязать текстурные координаты на глобальные, что бы текстура не дрожала. Профит.

Вот вроде просто )) Но программирования тут раз в 20 меньше математики

Мока, мне триалов для медитаций не хватает и на вид ксорс не лучше блитца. Да и жадный я)))
(Offline)
 
Ответить с цитированием
Старый 27.06.2011, 04:26   #15
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Имитация водной поверхности.

мне триалов для медитаций не хватает
Изучил-бы вопрос сначала. У Хорса триал - полная функциональность и ограничение по времени 30 минут. Я сомневаюсь что у тебя хватит силы воли медитировать на эти волны более 30 минут.

и на вид ксорс не лучше блитца.
Во-первых внешность обманчива. Во-вторых http://www.gamedev.ru/flame/forum/?id=142859 и ещё многое (офф. сайт в отключке), это хорс.

Блиц хуже Хорса по всем параметрам, он уже слишком стар чтобы с кем-то тягаться. Да и апдейты на него раз в год по обещанию.

Да и жадный я
Сделай игру - получи хорс бесплатно. Кажется ещё в силе.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо NitE за это полезное сообщение:
ARA (27.06.2011), maxturbo (27.06.2011), moka (27.06.2011), Mr_F_ (27.06.2011), Reizel (27.06.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com