Показать сообщение отдельно
Старый 04.09.2005, 06:47   #21
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Небесная сфера
Вопреки названию, будем создавать не сферу, а SkyBox -

коробку, так как для неё проще изготовить текстуру и

смотрится, имхо, она красивее.
Возьмём стандартную функцию создания из примеров блитца

(\Samples\Blitz 3D Samples\AGore\GrassDemo):
Function MakeSkyBox( file$ )

	m=CreateMesh()
;front face
	b=LoadBrush( file$+"_FR.bmp",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
	AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
;right face
	b=LoadBrush( file$+"_LF.bmp",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
	AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
;back face
	b=LoadBrush( file$+"_BK.bmp",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
	AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
;left face
	b=LoadBrush( file$+"_RT.bmp",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
	AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
;top face
	b=LoadBrush( file$+"_UP.bmp",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
	AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b

	ScaleMesh m,100,100,100
	FlipMesh m
	EntityFX m,9
	EntityOrder m,10
	Return m
	
End Function
и скопируем её в наш код. Вот, кстати, довод за

использование ф-ций: в любой момент вы можете использовать

свои наработки в других проектах.

Переместимся в функцию create_world()
	create_user()
	
	sky=MakeSkyBox("sky")
	
	c_bot=Input("input Amount")
и скопируем текстуры неба из папки с примером в папку нашеё

программы. Уже сейчас можно посмотреть на результат, правда,

сомнительный.
Из-за недостаточных размеров skybox`а небо ощутимо

квадратное:



Отскалим небо
ScaleEntity sky,150,150,150
После этого незамысловатого изменения небо исчезнет совсем =(
Вероятно оно за максимальным радиусом ренедера.
глянем в create_user - именно здесь мы обрезали расстония

рендера, правим:
CameraRange camera,0.1,10000
Проверяем - всё работает =)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием