 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
10.02.2006, 19:07
|
#1
|
AnyKey`щик
Регистрация: 10.02.2006
Сообщений: 1
Написано 0 полезных сообщений (для 0 пользователей)
|
Привет всем, ребята, подскажите плиз, как создать бесконечный космос, чтобы везде распологались звезды ? Может с помощью спрайтов и массива вывести ? Тогда что же это должен быть за массив если космос будет бесконечным ? Помогите вообщем ))
|
(Offline)
|
|
10.02.2006, 20:14
|
#2
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Ща если скажу бред небить
Первые мои мысли:
если радиус меньше допустим 200, звезды в случ. порядке.
Вторые мои мысли:
если больше 200 удалять звезды
|
(Offline)
|
|
10.02.2006, 20:33
|
#3
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Это делается с помощью Skybox.
|
(Offline)
|
|
10.02.2006, 20:51
|
#4
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Оба варианта правильны, какой выбрать - зависит от конкретики игры
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
11.02.2006, 11:02
|
#5
|
Нуждающийся
Регистрация: 09.11.2005
Сообщений: 69
Написано одно полезное сообщение
|
Можно создать список звезд и перемещать их вслед за игроком, какждый раз рандомно переставляя.
|
(Offline)
|
|
17.08.2006, 13:43
|
#6
|
ПроЭктировщик
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений (для 19 пользователей)
|
Re: Космос
или создать рандомно звезды и привязать к скайбоксу, который перемещается вместе с камерой...
|
(Offline)
|
|
17.08.2006, 19:55
|
#7
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Космос
Скайсфера в этом случае лучше.
А всякий космический мусор в тип и функцию апдейта:
дистанция до камеры больше чем опр. значение - хиде,пойнт ентиту камера и мове на 2 дистанции, шов.
__________________
|
(Offline)
|
|
17.08.2006, 21:04
|
#8
|
ПроЭктировщик
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений (для 19 пользователей)
|
Re: Космос
пример кода плиз... очень интересно...
|
(Offline)
|
|
17.08.2006, 22:58
|
#9
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Космос
Function UpdateSp()
For spa.sput=Each sput
dist#=EntityDistance(spa\en,cam)
If dist>ast_dist
HideEntity spa\en
PointEntity spa\en,cam
MoveEntity spa\en,0,0,ast_dist*2
ShowEntity spa\en
EndIf
Next
End Function
|
Типа так
__________________
|
(Offline)
|
|
18.08.2006, 10:15
|
#10
|
ПроЭктировщик
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений (для 19 пользователей)
|
Re: Космос
Сообщение от tormoz
Function UpdateSp()
For spa.sput=Each sput
dist#=EntityDistance(spa\en,cam)
If dist>ast_dist
HideEntity spa\en
PointEntity spa\en,cam
MoveEntity spa\en,0,0,ast_dist*2
ShowEntity spa\en
EndIf
Next
End Function
Типа так
|
т.е. до этого создан кос.мусор с типом sput
кол-во объектов с этим типом может быть много, а следовательно перебор и сравнение может занять большое время...
а нельзя ли в области видимости камеры создавать рандомно звезды...
двигаешь вперед они пролетают мимо и позади на определенном расстоянии удаляются...
поворачиваешь направо справа появляются следва удаляются...
и т.п.
может коряво объяснил... я пытался но пока у меня не получается....
|
(Offline)
|
|
18.08.2006, 12:54
|
#11
|
ПроЭктировщик
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений (для 19 пользователей)
|
Re: Космос
Вот что у меня получилось:

;GoodWin
;[email protected]
; Отдельное спасибо tormoz'у
AppTitle "Полет через звезды"
Global width% = 800, height% = 600
Graphics3D width,height,32,2
SetBuffer BackBuffer()
Include "sky.bb"
Const kUp% = 200, KDown% = 208, KLeft% = 203, KRight% = 205, Kback%= 31 ,KAccel%=30
Global camera, player, sky, stars, tangaj#, kren#, accel#
Global star_sprite = LoadSprite ("star.jpg",41) : HideEntity star_sprite
Global star_sprite2 = LoadSprite ("star2.jpg",41) : HideEntity star_sprite2
Type star
Field entity
End Type
player=CreateSphere()
camera=CreateCamera(player)
PositionEntity camera,0,0,-10;
CameraRange Camera,.1,10000000000000
Light=CreateLight(1)
RotateEntity Light,0,-90,0
AmbientLight 50,50,50
sky=CreatePivot ()
For i=1 To 400
create_dinamic_star
Next
For i=1 To 400
create_star()
Next
While Not KeyHit(1)
ControlsPlayers ()
update_star()
PositionEntitysky,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1)
UpdateWorld
RenderWorld
Text 10,10,"Полет через звезды"
Flip
Wend
End
;Функции=========================================== =
Function ControlsPlayers ()
v#=.1
If accel#<0 Then
accel#=0
ElseIf accel#>5
accel#=5
Else
accel#=accel#+MouseDown(1)*v#-MouseDown(2)*v#
EndIf
MoveEntity player,0,0,accel#
TurnEntity player,MouseYSpeed(),MouseXSpeed(),o
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
End Function
Function create_Star ()
sprite=CopyEntity(star_sprite2,sky)
scale=75
ScaleSprite sprite,scale,scale
EntityFX sprite,41
EntityOrder sprite,8
SpriteViewMode sprite,2
PositionEntity sprite,0,0,0
RotateEntity sprite,Rnd(-90,90),Rnd(0,360),0
MoveEntity sprite,0,0,900
End Function
Function create_dinamic_star ()
sp.star=Newstar
sp\entity=CopyEntity(star_sprite)
scale#=.2
ScaleSprite sp\entity,scale#,scale#
EntityFX sp\entity,41
EntityOrder sp\entity,8
PositionEntity sp\entity,0,0,0
RotateEntity sp\entity,Rnd(-90,90),Rnd(0,360),0
MoveEntity sp\entity,0,0,Rnd(50,150)
SpriteViewModesp\entity,1
End Function
Function update_Star()
For s.star = Each star
dist#=EntityDistance(s\entity,player)
Ifdist#>100 Then
PositionEntity s\entity,EntityX#(camera,1),EntityY#(camera,1),EntityZ#(camera,1)
RotateEntity s\entity,(EntityPitch#(camera,1)+Rnd(-90,90)),(EntityYaw#(camera,1)+Rnd(-90,90)),0
MoveEntity s\entity,0,0,Rnd(50,100)
EndIf
Next
Delete s
EndFunction
|
в аттаче два изображения...
|
(Offline)
|
|
18.08.2006, 13:19
|
#12
|
ПроЭктировщик
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений (для 19 пользователей)
|
Re: Космос
а вот скрин...
небула скайбоксом сделана...
естественно не видно как движутся звезды
|
(Offline)
|
|
18.08.2006, 15:43
|
#13
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Космос
Сообщение от GoodWin
т.е. до этого создан кос.мусор с типом sput
кол-во объектов с этим типом может быть много, а следовательно перебор и сравнение может занять большое время...
|
Создай 200 штук - вполне хватит чтобы создать астероидный пояс
Перебор будет занимать 0.2 мс
а нельзя ли в области видимости камеры создавать рандомно звезды...
двигаешь вперед они пролетают мимо и позади на определенном расстоянии удаляются...
поворачиваешь направо справа появляются следва удаляются...
и т.п.
может коряво объяснил... я пытался но пока у меня не получается....
|
А смысл ?
Содание\удаление займет БОЛЬШЕ времени в разы, чем перемещение заранее созданного определенного числа.
__________________
|
(Offline)
|
|
18.08.2006, 15:47
|
#14
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Космос
Еще очень полезно использовать "активный скейл"
Например:
dist#=EntityDistance(spt\piv,cam)
sc#=.5/dist
;If sc>2 sc=2 ;ограничение макс размера
ScaleEntity spt\en,sc,sc,sc
|
__________________
|
(Offline)
|
|
18.08.2006, 17:02
|
#15
|
ПроЭктировщик
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений (для 19 пользователей)
|
Re: Космос
Сообщение от tormoz
Создай 200 штук - вполне хватит чтобы создать астероидный пояс
Перебор будет занимать 0.2 мс
.
|
Сообщение от tormoz
А смысл ?
Содание\удаление займет БОЛЬШЕ времени в разы, чем перемещение заранее созданного определенного числа.
|
я так и сделал... подумав....
по поводу примера нормально что-ли?
Еще очень полезно использовать "активный скейл"
|
попробую...
ты, я понимаю, что-то подобное уже создавал? где можно глянуть?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:58.
|