Нуждающийся
Регистрация: 07.02.2009
Сообщений: 92
Написано 16 полезных сообщений (для 38 пользователей)
|
поворот объекта на объект

Function createquad()
quad=CreateMesh()
surf=CreateSurface(quad)
v1=AddVertex(surf,0,5,0)
v2=AddVertex(surf,0,-5,0)
v3=AddVertex(surf,40,5,0)
v4=AddVertex(surf,40,-5,0)
AddTriangle(surf,v1,v3,v4)
AddTriangle(surf,v1,v4,v2)
RotateMesh quad,90,0,0
EntityColor quad,0,0,0
Return quad
End Function
Function obzor(cam)
If KeyDown(31) Then MoveEntity cam,0,0,-temp
If KeyDown(17) Then MoveEntity cam,0,0,temp
If KeyDown(30) Then MoveEntity cam,-temp,0,0
If KeyDown(32) Then MoveEntity cam,temp,0,0
xm=MouseXSpeed()
ym=MouseYSpeed()
MoveMouse 400,300
TurnEntity cam,ym*mouse,-xm*mouse,0
End Function
Function update(cam,mesh1,mesh2,mesh3)
RotateEntity mesh1,0,-(ATan2(EntityX(cam,1)-EntityX(mesh1,1),EntityZ(cam,1)-EntityZ(mesh1,1)))+90,270,1
RotateEntity mesh2,-(ATan2(EntityY(cam,1)-EntityY(mesh2,1),EntityZ(cam,1)-EntityZ(mesh2,1)))+90,0,0,1
End Function
Graphics3D 800,600,0,0
Global mouse#=.1,temp#=.5
w1=createquad()
PositionEntity w1,-7,0,0
w2=createquad()
PositionEntity w2,0,0,7
cam=CreateCamera()
CameraClsColor cam,255,255,255
PositionEntity cam,0,2,-10
Repeat
obzor cam
update cam,w1,w2,w3
RenderWorld
UpdateWorld
Flip()
Until KeyHit(1)
End
|
Два прямоугольника поворачиваются к камере вокруг своей локальной оси. А как сделать, чтобы эту ось можно было изменять, т. е. при любом повороте объекта он остался повернут своей полной видимой стороной к камере, и поворачивался по своей локальной, той же оси.
Я что-то не могу понять как это сделать.
|