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

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

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

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

Ответ
 
Опции темы
Старый 09.06.2010, 14:24   #1
painter
AnyKey`щик
 
Регистрация: 09.06.2010
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
поворот меша

доброго всем дня...вопрос собственно такой...вращаю меш,он вращается вокруг своего центра,возможно ли в процессе изменять его центр?
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 14:27   #2
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: поворот меша

можно. сдвигаешь все точки так, чтобы новый центр меша был в центре координат.
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 14:29   #3
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: поворот меша

Сообщение от painter Посмотреть сообщение
доброго всем дня...вопрос собственно такой...вращаю меш,он вращается вокруг своего центра,возможно ли в процессе изменять его центр?
Есть несколько вариантов:

1) Сдвинуть меш в прямо в 3д модели (если это у тебя какая-то модель)
2) Двигать Afect Pivot(Центр меша) в максе. (Тоже, если это загружаемая модель)
3) Сдвинуть меш кодом через PositionMesh.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 14:59   #4
RlexGm
ПроЭктировщик
 
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений
(для 34 пользователей)
Ответ: поворот меша

еще есть вариант, если тебе надо вращать вокруг другой точки, создаёш пивот, свой меш парентишь к этому пивоту, и этот пивот вращаеш, и меш тоже будет вращаться, только вокруг этого пивота
В главном коде:
Mesh=LoadMesh("mesh.b3d"):PositionEntity Mesh,15,0,15 ; создаём меш и позиционируем его в нужную координату
Pivot=CreatePivot():PositionEntity pivot,10,0,15 ; создаём меш и позиционируем его в нужную координату
EntityParent Mesh,Pivot ; парентим меш к пивоту
В цикле:
RotateEntity Pivot,.......
или 
TurnEntity Pivot,.....
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 15:29   #5
painter
AnyKey`щик
 
Регистрация: 09.06.2010
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: поворот меша

с пивотом затея хороша,но есть одно но,мне нужно двигать этот пивот,а если сделать привязку,то и меш движется вместе с пивотом...дело в том ,что я передвигаю по мешу группу объектов,пробовал поворачивать их,и они у меня разбегаются кто куда,что не есть гуд,вот мне и пришла идея поворачивать меш по которому они передвигаются
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 15:33   #6
RlexGm
ПроЭктировщик
 
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений
(для 34 пользователей)
Ответ: поворот меша

если я правильно понял(что очень трудно ),а что если эту группу объектов привязать не к мешу, а к пивоту? и сам меш тоже к пивоту?
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 16:00   #7
painter
AnyKey`щик
 
Регистрация: 09.06.2010
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: поворот меша

дело в том,что я вычисляю Y координату меша,а потом делаю positionentity ent,0,entyti y(pln),0 и при движении объекты повторяют все неровности меша,если делать привязку к пивоту,то они просто прермещаются в месте с пивотом,от коллизии отказался,потому,что при движенииони начинают отставать друг от друга...
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 16:48   #8
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: поворот меша

верти не сцену, а камеру
__________________
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 17:14   #9
painter
AnyKey`щик
 
Регистрация: 09.06.2010
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: поворот меша

каким образом,она у меня (translateentity)и когда ей делаешь turnentity она просто игнорирует команды
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 18:04   #10
RlexGm
ПроЭктировщик
 
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений
(для 34 пользователей)
Ответ: поворот меша

чето не могу это всё представить, может даш код?
(Offline)
 
Ответить с цитированием
Старый 09.06.2010, 18:22   #11
painter
AnyKey`щик
 
Регистрация: 09.06.2010
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: поворот меша

Global speed#=0
Global angle#=0

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam,0,5,-10
CameraRange cam,.1,300000000

lit=CreateLight()
TurnEntity lit,0,270,0


pln=LoadMesh("materials\ter.b3d")


tex=LoadTexture("materials\ppp.jpg")

EntityTexture pln,tex

Sky=LoadSkyBox ( "materials\sky\" )
ScaleEntity Sky, 10, 10, 10
EntityOrder sky,1

pivFR=CreatePivot()
PositionEntity pivFR,4.5,1.6,8

pivFL=CreatePivot()
PositionEntity pivFL,-4.5,1.6,8

pivRR=CreatePivot()
PositionEntity pivRR,4.5,1.6,-5.5

pivRL=CreatePivot()
PositionEntity pivRL,-4.5,1.6,-5.5

wheel_mesh = LoadMesh("materials\tara\disk2.3ds")
ScaleEntity wheel_mesh ,.005,.005,.005
RotateMesh wheel_mesh,0,90,0
wheel_meshd = LoadMesh("materials\tara\disk.3ds")
ScaleEntity wheel_meshd ,.005,.005,.005
RotateMesh wheel_meshd,0,90,0

wheel_mesh2 = LoadMesh("materials\tara\disk2.3ds")
ScaleEntity wheel_mesh2 ,.005,.005,.005
RotateMesh wheel_mesh2,0,-90,0
wheel_meshd2 = LoadMesh("materials\tara\disk.3ds")
ScaleEntity wheel_meshd2 ,.005,.005,.005
RotateMesh wheel_meshd2,0,-90,0

wFR=CopyEntity (wheel_mesh)
EntityParent wFR,pivFR
wFRd=CopyEntity (wheel_meshd)
EntityParent wFRd,wFR
PositionEntity wFR,x#,y#,z#

wFL=CopyEntity (wheel_mesh2)
EntityParent wFL,pivFL
wFLd=CopyEntity (wheel_meshd2)
EntityParent wFLd,wFL
PositionEntity wFL,x2#,y2#,z2#

wRR=CopyEntity (wheel_mesh)
EntityParent wRR,pivRR
wRRd=CopyEntity (wheel_meshd)
EntityParent wRRd,wRR
PositionEntity wRR,x3#,y3#,z3#

wRL=CopyEntity (wheel_mesh2)
EntityParent wRL,pivRL
wRLd=CopyEntity (wheel_meshd2)
EntityParent wRLd,wRL
PositionEntity wRL,x4#,y4#,z4#

FreeEntity wheel_mesh
FreeEntity wheel_meshd
FreeEntity wheel_mesh2
FreeEntity wheel_meshd2

Repeat

If KeyDown(205)Then
angle#=angle#-3
If angle#<-30 angle#=-30
Else
angle#=angle#*.9
EndIf

If KeyDown(203)Then
angle#=angle#+3
If angle#>30 angle#=30
Else
angle#=angle#*.9
EndIf

RotateEntity  wFR,0,angle#,0
RotateEntity wFL,0,angle#,0







If KeyDown(200)=True Then
speed=speed+.01
If speed>1 speed=1
Else If KeyDown(208)=True Then
speed=speed-.02
If speed<-.5 speed=-.5
Else
speed=speed*0.99
EndIf




MoveEntity pivFR,0,0,speed#
MoveEntity pivFL,0,0,speed#
MoveEntity pivRR,0,0,speed#
MoveEntity pivRL,0,0,speed#




RotateMesh  wFR,speed*25,0,0
RotateMesh  wFRd,speed*25,0,0
RotateMesh  wFL,speed*25,0,0
RotateMesh  wFLd,speed*25,0,0

x#=EntityX(pivFR)
y#=EntityY(pivFR)
z#=EntityZ(pivFR)

x2#=EntityX(pivFL)
y2#=EntityY(pivFL)
z2#=EntityZ(pivFL)

x3#=EntityX(pivRR)
y3#=EntityY(pivRR)
z3#=EntityZ(pivRR)

x4#=EntityX(pivRL)
y4#=EntityY(pivRL)
z4#=EntityZ(pivRL)

ter_y#=EntityY(pln)
ter_y2#=EntityY(pln)
ter_y3#=EntityY(pln)
ter_y4#=EntityY(pln)

PositionEntity pivFR,x#,ter_y#,z#
PositionEntity pivFL,x2#,ter_y2#,z2#
PositionEntity pivRR,x3#,ter_y3#,z3#
PositionEntity pivRL,x4#,ter_y4#,z4#



PointEntity cam,wFR
MoveEntity cam,0,0,(EntityDistance(wFR,cam)-50)*0.4
TranslateEntity cam,-1,(phBodyGetY(wFR) - EntityY(cam,1)+EntityY(wFR)+20)*.1,-.05,1




UpdateWorld
RenderWorld


PositionEntity Sky,EntityX( cam,1 ) ,EntityY( cam,1 ), EntityZ( cam,1 )

PostProcess_Render cam




Flip
Until KeyHit(1)



End





Function LoadSkyBox( file$ )

	m=CreateMesh()
	;front face
	b=LoadBrush( file$+"sky-111.jpg",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$+"sky-222.jpg",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$+"sky-333.jpg",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$+"sky-444.jpg",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$+"sky-555.jpg",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,1
	Return m
	
End Function

сильно не смейтесь я только начал))
(Offline)
 
Ответить с цитированием
Старый 10.06.2010, 10:31   #12
RlexGm
ПроЭктировщик
 
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений
(для 34 пользователей)
Ответ: поворот меша

ну всё так и есть, создаёшь пивот посередине этих колёс, и колёса парентиш к пивоту, двигаешь не колёса,а пивот,а где:
PositionEntity pivFR,x#,ter_y#,z#
PositionEntity pivFL,x2#,ter_y2#,z2#
PositionEntity pivRR,x3#,ter_y3#,z3#
PositionEntity pivRL,x4#,ter_y4#,z4#

ставишь
PositionEntity pivFR,x#,ter_y#,z#,true
PositionEntity pivFL,x2#,ter_y2#,z2#,true
PositionEntity pivRR,x3#,ter_y3#,z3#,true
PositionEntity pivRL,x4#,ter_y4#,z4#,true
последний параметр true обозначает что позиционировать объект надо в глобальных координатах.
------------
ах да забыл добавить, при получении координат EntityX,EntityY и EntityX ставь в конце тоже true, например:
x#=EntityX(pivFR,true)

Последний раз редактировалось RlexGm, 10.06.2010 в 10:34. Причина: забыл про EntityX,EntityY и EntityZ
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
painter (10.06.2010)
Старый 10.06.2010, 18:22   #13
painter
AnyKey`щик
 
Регистрация: 09.06.2010
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: поворот меша

спасибо тебе огромное,выручил
(Offline)
 
Ответить с цитированием
Старый 10.06.2010, 18:28   #14
RlexGm
ПроЭктировщик
 
Регистрация: 11.11.2009
Сообщений: 172
Написано 17 полезных сообщений
(для 34 пользователей)
Ответ: поворот меша

для этого есть кнопка "полезно"
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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