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

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

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

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

Ответ
 
Опции темы
Старый 10.02.2006, 19:07   #1
exec
AnyKey`щик
 
Регистрация: 10.02.2006
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Привет всем, ребята, подскажите плиз, как создать бесконечный космос, чтобы везде распологались звезды ? Может с помощью спрайтов и массива вывести ? Тогда что же это должен быть за массив если космос будет бесконечным ? Помогите вообщем ))
(Offline)
 
Ответить с цитированием
Старый 10.02.2006, 20:14   #2
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Печаль

Ща если скажу бред небить
Первые мои мысли:
если радиус меньше допустим 200, звезды в случ. порядке.
Вторые мои мысли:
если больше 200 удалять звезды
(Offline)
 
Ответить с цитированием
Старый 10.02.2006, 20:33   #3
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Это делается с помощью Skybox.
(Offline)
 
Ответить с цитированием
Старый 10.02.2006, 20:51   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 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
GoodWin
ПроЭктировщик
 
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений
(для 19 пользователей)
Re: Космос

или создать рандомно звезды и привязать к скайбоксу, который перемещается вместе с камерой...
(Offline)
 
Ответить с цитированием
Старый 17.08.2006, 19:55   #7
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Космос

Скайсфера в этом случае лучше.
А всякий космический мусор в тип и функцию апдейта:
дистанция до камеры больше чем опр. значение - хиде,пойнт ентиту камера и мове на 2 дистанции, шов.
__________________
(Offline)
 
Ответить с цитированием
Старый 17.08.2006, 21:04   #8
GoodWin
ПроЭктировщик
 
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений
(для 19 пользователей)
Re: Космос

пример кода плиз... очень интересно...
(Offline)
 
Ответить с цитированием
Старый 17.08.2006, 22:58   #9
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 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
GoodWin
ПроЭктировщик
 
Регистрация: 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
GoodWin
ПроЭктировщик
 
Регистрация: 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()


PositionEntity
sky,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
GoodWin
ПроЭктировщик
 
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений
(для 19 пользователей)
Re: Космос

а вот скрин...
небула скайбоксом сделана...
естественно не видно как движутся звезды
(Offline)
 
Ответить с цитированием
Старый 18.08.2006, 15:43   #13
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Космос

Сообщение от GoodWin
т.е. до этого создан кос.мусор с типом sput
кол-во объектов с этим типом может быть много, а следовательно перебор и сравнение может занять большое время...
Создай 200 штук - вполне хватит чтобы создать астероидный пояс
Перебор будет занимать 0.2 мс

а нельзя ли в области видимости камеры создавать рандомно звезды...
двигаешь вперед они пролетают мимо и позади на определенном расстоянии удаляются...
поворачиваешь направо справа появляются следва удаляются...
и т.п.
может коряво объяснил... я пытался но пока у меня не получается....
А смысл ?
Содание\удаление займет БОЛЬШЕ времени в разы, чем перемещение заранее созданного определенного числа.
__________________
(Offline)
 
Ответить с цитированием
Старый 18.08.2006, 15:47   #14
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 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
GoodWin
ПроЭктировщик
 
Регистрация: 14.08.2006
Сообщений: 105
Написано 15 полезных сообщений
(для 19 пользователей)
Re: Космос

Сообщение от tormoz
Создай 200 штук - вполне хватит чтобы создать астероидный пояс
Перебор будет занимать 0.2 мс
.
Сообщение от tormoz
А смысл ?
Содание\удаление займет БОЛЬШЕ времени в разы, чем перемещение заранее созданного определенного числа.
я так и сделал... подумав....
по поводу примера нормально что-ли?

Еще очень полезно использовать "активный скейл"
попробую...

ты, я понимаю, что-то подобное уже создавал? где можно глянуть?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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