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

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

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

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

Ответ
 
Опции темы
Старый 18.12.2010, 16:37   #16
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Создание эффектов в стиле WarCraft

Ой неужели я правда такую ссылку запостил? Вот балда
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 16:45   #17
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Создание эффектов в стиле WarCraft

Сообщение от ABTOMAT Посмотреть сообщение
Ой неужели я правда такую ссылку запостил? Вот балда
Да, ссылка эпическая по размеру
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 16:48   #18
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Создание эффектов в стиле 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 Flex02550


;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 levelbut 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=CreateMeshparent )
    
surf=CreateSurfacemesh )
    
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 )
            
AddTrianglesurf,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 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 за это полезное сообщение:
Goblur (18.12.2010), LLI.T.A.L.K.E.R. (29.03.2011)
Старый 18.12.2010, 16:50   #19
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Создание эффектов в стиле WarCraft

VertexCoords s,i,vx,vy,vz
Тред не читай @ Сразу отвечай
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Amatsu (18.12.2010), Egor Rezenov (18.12.2010), SBJoker (18.12.2010)
Старый 18.12.2010, 17:55   #20
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 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 - Хендл на символ
* Удаление.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
Артем Валерьевич (21.12.2010), Alex_Noc (21.12.2010), Goblur (18.12.2010), Reks888 (18.12.2010), St_AnGer (18.12.2010)
Старый 18.12.2010, 18:16   #21
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Создание эффектов в стиле WarCraft

я делал просто квад с текстурой ауры !! квад под ноги юниту !! Выставлял ордер кваду что бы он редерился после террейна !! Тут есть одно ололо - если юнит стоит на склоне, то можно так выкрутить камеру что с другой стороны склона рендерился этот квад !!
Но у меня камеры была почти всегда с верху, так что трабла эта отпадала !!
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 18:34   #22
Goblur
Оператор ЭВМ
 
Регистрация: 18.12.2010
Сообщений: 22
Написано 4 полезных сообщений
(для 9 пользователей)
Ответ: Создание эффектов в стиле WarCraft

Спасибо EvilChaotic за хороший пример. Думаю тему можно закрывать.
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 19:16   #23
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Создание эффектов в стиле WarCraft

EvilChaotic. Тормозит сильно. Имхо тут проще и разумней квад сделать.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 19:29   #24
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Создание эффектов в стиле WarCraft

Сообщение от Gector Посмотреть сообщение
EvilChaotic. Тормозит сильно. Имхо тут проще и разумней квад сделать.
Оно не может тормозить и темболее сильно от 6x6 террайн игриков. Сдаться мне, что ты говоришь о движении сферы Sin/Cos. Закоменти функцию создания символа - увидишь тежи "лаги" при движении сферы и отсутствие эффекта. А лучше напиши счетчик фпс и отключи синхронизацию кадров.

Вот, 389:


Без эффекта 402.
Оно нормально работает.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 20:19   #25
Goblur
Оператор ЭВМ
 
Регистрация: 18.12.2010
Сообщений: 22
Написано 4 полезных сообщений
(для 9 пользователей)
Ответ: Создание эффектов в стиле WarCraft

Сообщение от Gector Посмотреть сообщение
EvilChaotic. Тормозит сильно. Имхо тут проще и разумней квад сделать.
Вполне хорошо работает, на моем железе фпс: 840-870 выдает.
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 20:19   #26
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: Создание эффектов в стиле WarCraft

А вот чо... Стер движение по синусу и подставил обыкновенное движение. Все заработало. Я честно говоря сам понять не мог откуда взялись "тормоза" при переборе нескольких вершин.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 18.12.2010, 20:25   #27
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Создание эффектов в стиле WarCraft

Угу. А вообще это моя ошибка.
		Local sinX# = Sin(Float(MilliSecs()) / 30 ) * 30
		Local sinZ# = Cos(Float(MilliSecs()) / 30 ) * 30
Так будет работать плавно.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (18.12.2010)
Старый 18.12.2010, 20:26   #28
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 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)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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