Нуждающийся
Регистрация: 10.09.2006
Сообщений: 77
Написано 3 полезных сообщений (для 3 пользователей)
|
Помогите осуществить совпадение координат
Доброго времени суток. Делаю так, чтобы модель можно было подстраивать по фото. Выделяем точку мышкой и передвигаем, модель при этом деформируется. Проблема в том, что координаты не совпадают (см. рис. слева две зелёные точки стоят рядом, а на модели вершины 26 и 18 отнюдь не рядом. Заранее благодарен.

...
Global mesh=LoadAnimMesh("Губы.3DS")
mesh=FindChild(mesh,"Box003")
Global surface=GetSurface(mesh,1)
Global start_x
Global start_y
Global plane=CreatePlane()
Global chislo_vertex=9
Dim array_point(chislo_vertex)
Dim array_vertex_mesh(chislo_vertex)
Create_Fas_Profil_Fon()
Create_Points()
Start_Modify_Mesh(mesh)
...
Repeat
...
If MouseDown(1) Then
pick=CameraPick(cam,MouseX(),MouseY())
For x=0 To chislo_vertex
If array_point(x)=pick Then
point=array_point(x)
nomer=x
start_pos_x#=EntityX(array_point(nomer))
start_pos_y#=EntityY(array_point(nomer))
start_pos_z#=EntityZ(array_point(nomer))
start_vertex_x#=VertexX(surface,array_vertex_mesh(nomer))
start_vertex_y#=VertexY(surface,array_vertex_mesh(nomer))
start_vertex_z#=VertexZ(surface,array_vertex_mesh(nomer))
EndIf
EntityPickMode array_point(x),0
Next
EndIf
...
If (MouseDown(1)) And (point>0) Then
PositionEntity point,PickedX(),PickedY(),EntityZ(point)
distance_x#=(-EntityX(array_point(nomer))+start_pos_x#+start_vertex_z#)
distance_y#=(EntityY(array_point(nomer))-start_pos_y#+start_vertex_y#)
distance_z#=(EntityZ(array_point(nomer))-start_pos_z#+start_vertex_x#)
vertex_x#=VertexX(surface,array_vertex_mesh(nomer))
vertex_y#=VertexY(surface,array_vertex_mesh(nomer))
vertex_z#=VertexZ(surface,array_vertex_mesh(nomer))
Select nomer
Case 0,1
VertexCoords surface,array_vertex_mesh(nomer),vertex_x#,distance_y#,distance_x#
End Select
EndIf
...
Function Start_World();
RotateEntity plane,-90,0,0
EntityColor plane,137,137,137
PositionEntity plane,0,0,15
EntityAlpha plane,0.1
EntityPickMode plane,2
End Function
Function Start_Modify_Mesh(mesh);
RotateEntity mesh,0,10,0
PositionEntity mesh,10,0,25
End Function
Function Create_Fas_Profil_Fon();
x=2
cube_fas=CreateCube()
PositionEntity cube_fas,-9,0,15
ScaleEntity cube_fas,2.46*x,x,0.01
texture=LoadTexture("Губы фас.jpg")
EntityTexture cube_fas,texture
cube_profil=CreateCube()
PositionEntity cube_profil,-1,0,15
ScaleEntity cube_profil,0.88*x,x,0.01
texture=LoadTexture("Губы профиль.jpg")
EntityTexture cube_profil,texture
End Function
Function Create_Points();
For x=0 To chislo_vertex
array_point(x)=CreateSphere(16)
PositionEntity array_point(x),-1,0,15
ScaleEntity array_point(x),0.1,0.1,0.1
EntityColor array_point(x),0,255,0
EntityPickMode array_point(x),1
Next
PositionEntity array_point(0),-12.961,0.684,EntityZ(array_point(0)) ;
PositionEntity array_point(1),-12.168,1.039,EntityZ(array_point(0)) ; 1 точка
PositionEntity array_point(2),-11.402,1.230,EntityZ(array_point(0)) ; 2 точка
PositionEntity array_point(3),-10.500,1.313,EntityZ(array_point(0)) ; 3 точка (верхняя)
PositionEntity array_point(4), -9.461,0.930,EntityZ(array_point(0)) ; 4 точка
array_vertex_mesh(0)=18
array_vertex_mesh(1)=26
End Function
|