 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
18.12.2010, 16:37
|
#16
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений (для 15,676 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Ой неужели я правда такую ссылку запостил? Вот балда
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
18.12.2010, 16:45
|
#17
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Сообщение от ABTOMAT
Ой неужели я правда такую ссылку запостил? Вот балда
|
Да, ссылка эпическая по размеру 
|
(Offline)
|
|
18.12.2010, 16:48
|
#18
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,367
Написано 2,476 полезных сообщений (для 6,864 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
И тут в тред врывается рандоме.

HidePointer()
Global camera,light,world,Flex,mx#,my#,ball,w
;setup graphics and scene
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
camera=CreateCamera()
CameraRange camera,1,1600
MoveEntity camera,500,800,500
light=CreateLight(2)
MoveEntity light,0,400,400
LightRange light,350
AmbientLight 50,50,50
;make test world
world=CreateWorld()
;make shadow
Flex=CreateFlex()
EntityColor Flex, 0, 255, 0
;hack
;whitetexture=CreateTexture(32,32)
;make ball
ball=CreateSphere()
EntityColor ball,255,0,0
EntityShininess ball,1
ScaleEntity ball,50,50,50
MoveEntity ball,0,300,0
TurnEntity ball,0,-45,0
;misc
PointEntity camera,world
SetBuffer BackBuffer()
;mainloop
While Not KeyHit(1)
If KeyHit(17)
w=1-w
WireFrame w
;visibility hack for you to test
If w=1
EntityBlend Flex,1
Else
EntityBlend Flex,2
EndIf
EndIf
mx#=MouseXSpeed()*0.5
my#=MouseYSpeed()*0.5
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
MoveEntity ball,-mx,0,my
;UpdateFlex(target deformable mesh (try a model!!),mesh that casts shadow)
UpdateFlex(Flex,ball)
UpdateWorld
RenderWorld
Text 0,0,"Use mouse to move ball, watch the shadow!"
Text 0,16,"press 'w' to toggle wireframe mode, ESC to quit."
Flip
Wend
End
;load your own level? but make it pickable.
Function CreateWorld()
p=CreatePivot()
a=CreateCube(p)
FitMesh a,-500,0,-500,1000,10,1000
a=CreateCube(p)
FitMesh a,-200,10,-200,400,40,400
a=CreateSphere(8,p)
ScaleEntity a,100,100,100
MoveEntity a,-200,0,-200
a=CreateSphere(8,p)
ScaleEntity a,100,100,100
MoveEntity a,200,0,-200
a=CreateSphere(8,p)
ScaleEntity a,100,100,100
MoveEntity a,200,0,200
a=CreateSphere(8,p)
ScaleEntity a,100,100,100
MoveEntity a,-200,0,200
For i=1 To CountChildren(p)
EntityPickMode GetChild(p,i),2
Next
Return p
End Function
Function CreateFlex()
m=CreateFace(8) ;segs
ScaleEntity m,250,250,250
Return m
End Function
Function UpdateFlex(flexmesh,source)
x#=EntityX(source):y#=EntityY(source):z#=EntityZ(source)
PositionEntity flexmesh,x,y,z
;you can optimise by precalculating x and z
s=GetSurface(flexmesh,1)
For i=0 To CountVertices(s)-1
vx#=VertexX(s,i)
vy#=0
vz#=VertexZ(s,i)
TFormPoint vx,vy,vz,flexmesh,0
vx=TFormedX() : vy=TFormedY() : vz=TFormedZ()
LinePick vx,vy,vz,vx,vy-9000,vz
vy=PickedY()+50
TFormPoint vx,vy,vz,0,flexmesh
vx=TFormedX() : vy=TFormedY() : vz=TFormedZ()
VertexCoords s,i,vx,vy,vz
Next
End Function
;Creates a single sided face
;segmented
Function CreateFace(segs=1,double=False,parent=0)
mesh=CreateMesh( parent )
surf=CreateSurface( mesh )
stx#=-.5
sty#=stx
stp#=Float(1)/Float(segs)
y#=sty
For a=0 To segs
x#=stx
v#=a/Float(segs)
For b=0 To segs
u#=b/Float(segs)
AddVertex(surf,x,0,y,u,v) ; swap these for a different start orientation
x=x+stp
Next
y=y+stp
Next
For a=0 To segs-1
For b=0 To segs-1
v0=a*(segs+1)+b:v1=v0+1
v2=(a+1)*(segs+1)+b+1:v3=v2-1
AddTriangle( surf,v0,v2,v1 )
AddTriangle( surf,v0,v3,v2 )
Next
Next
UpdateNormals mesh
If double=True Then EntityFX mesh,16
Return mesh
End Function
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
18.12.2010, 16:50
|
#19
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений (для 15,676 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
VertexCoords s,i,vx,vy,vz
|
Тред не читай @ Сразу отвечай
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
18.12.2010, 17:55
|
#20
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Тэк, делалось на не трезвую голову. ЗЫ Название переменных, отвечающих за объекты влом переименовывать. В коде никаких Pick, которые очень медленно будут работать на террайнах не требуется.
Пример:
http://rghost.ru/3655618
CreateSymbol(Entity,Texture%,Size#,GridSize%)
Entity - Обьект под которым рисуем символ.
Texture - Текстура на символ.
Size - Размер символа.
GridSize - Размер сетки.
* Возращает хендл на символ.
UpdateSymbols(Terrain%)
Terrain - Террайн.
* Апдейт.
FreeSymbol(h%)
h - Хендл на символ
* Удаление.
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
|
|
18.12.2010, 18:16
|
#21
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
я делал просто квад с текстурой ауры !! квад под ноги юниту !! Выставлял ордер кваду что бы он редерился после террейна !! Тут есть одно ололо - если юнит стоит на склоне, то можно так выкрутить камеру что с другой стороны склона рендерился этот квад !!
Но у меня камеры была почти всегда с верху, так что трабла эта отпадала !! 
|
(Offline)
|
|
18.12.2010, 18:34
|
#22
|
Оператор ЭВМ
Регистрация: 18.12.2010
Сообщений: 22
Написано 4 полезных сообщений (для 9 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Спасибо EvilChaotic за хороший пример. Думаю тему можно закрывать.
|
(Offline)
|
|
18.12.2010, 19:16
|
#23
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
EvilChaotic. Тормозит сильно. Имхо тут проще и разумней квад сделать.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
18.12.2010, 19:29
|
#24
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Сообщение от Gector
EvilChaotic. Тормозит сильно. Имхо тут проще и разумней квад сделать.
|
Оно не может тормозить и темболее сильно от 6x6 террайн игриков. Сдаться мне, что ты говоришь о движении сферы Sin/Cos. Закоменти функцию создания символа - увидишь тежи "лаги" при движении сферы и отсутствие эффекта. А лучше напиши счетчик фпс и отключи синхронизацию кадров.
Вот, 389:
Без эффекта 402.
Оно нормально работает.
|
(Offline)
|
|
18.12.2010, 20:19
|
#25
|
Оператор ЭВМ
Регистрация: 18.12.2010
Сообщений: 22
Написано 4 полезных сообщений (для 9 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Сообщение от Gector
EvilChaotic. Тормозит сильно. Имхо тут проще и разумней квад сделать.
|
Вполне хорошо работает, на моем железе фпс: 840-870 выдает.
|
(Offline)
|
|
18.12.2010, 20:19
|
#26
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
А вот чо... Стер движение по синусу и подставил обыкновенное движение. Все заработало. Я честно говоря сам понять не мог откуда взялись "тормоза" при переборе нескольких вершин.
__________________
Ибо как сказал Бгдн:
|
(Offline)
|
|
18.12.2010, 20:25
|
#27
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
Угу. А вообще это моя ошибка.
Local sinX# = Sin(Float(MilliSecs()) / 30 ) * 30
Local sinZ# = Cos(Float(MilliSecs()) / 30 ) * 30
Так будет работать плавно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.12.2010, 20:26
|
#28
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Создание эффектов в стиле WarCraft
856-902 фпс, полёт отличный 
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:22.
|