Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
1

3D движок - mp3d

15.08.2012, 00:33. Показов 3917. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Случайно нашел альтернативный 3D движок для PureBasic. Использует DX9.
Дать ссылку на первоисточник не могу, т. к. это форум.

Разбил архив на три части поскольку одним архивом не залить из-за ограничений форума.
Файл mp3d_31_x86.zip это библиотека, а в остальных архивах - примеры.
Вложения
Тип файла: zip mp3d_31_x86.zip (2.46 Мб, 278 просмотров)
Тип файла: rar MP3D Demos 1.rar (5.99 Мб, 328 просмотров)
Тип файла: rar MP3D Demos 2.rar (6.10 Мб, 226 просмотров)
4
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2012, 00:33
Ответы с готовыми решениями:

А кто сделал движок этого форума, потому что у многих русскоязычных форумов для программистов и не только движок похожий и кто его создал?
А кто сделал движок этого форума, потому что у многих русскоязычных форумов для программистов и не...

Движок на С++
Есть ли хороший движок на С++ для начинающих! Пусть 2d или 3D! Но главное на С++! Если можно то...

Движок 3D
Подскажите пожалуйста где можно написать игры так сказать с визуальным редактором Пробовал на C++...

3d движок
Приветствую всех. Есть следующая идея: Создать свой 3d движок да базе программирования на си++....

9
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
15.08.2012, 09:03 2
А вот это очень радует:
The library has been written in PureBasic.
- what is the purpose?
To make 2D and 3d games and application without using a external dll file
Действительно, проверил exe-шник из примеров, при размере всего в ~130 кб отличная физика и без сторонних DLL.
0
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
15.08.2012, 11:44  [ТС] 3
Да, еще забыл приложить версию библиотеки с поддержкой потоков.
Она во вложении.
Список возможностей 3D движка.
- Support for DirectX 9
- You can use many PureBasic commands directly
- Parent Kid for Sprite and Mesh available
- Sprite engine with rotating and animated sprites
- Sprite collision system, now with pixel pixel check
- Sprite manipulation commands
- mouse, joystick and Force Feedback Support
- Support Material
- Texturing with Mip Level
- Purebasic images to texture system
- Animated textures
- Different Light
- Bump mapping
- Access to Mesh Vertex
- Mesh Picking
- Mesh Animation
- Save the Meshes
- Collision system
- Fog Effect
- Integrated particle engine
- Gui of PureBasic possible
- Texture / pixel / vertex shader support
- Simple physics engine
- Primitives
- Scrolling background
- AnimParticle
- Transparenz of Meshes
- Direct Sound Effects
- Write / read pixels on Surface
- Other collision detection
- Background Scrolling
- Multiple Views
- 2D Draw functions
- fast Surface technologie
- BitmapFonts
- RenderToTexture functions
- integration of many function of the FXLib by Epyx in mp3D (Thanks to the implementation of Epyx).
- post processing with shader.
- Cullum Frustum
- Shadow
- expansion of many shader instructions
- 187 shaders total
- Shadereditor
- 2Dto3D and 3Dto2D calculations
- Physics expansion by Newton physics
- Epyx 3D and vector objects
- Some Updates and new demos
- New command expansions
- 2D Physic with Chipmunk
- Tile Engine by Epyx
- Tile converter for Tiled MapEditor => http://www.mapeditor.org/
- Some new Games

List of mesh sizes:
- Microsoft DirectX (. X, with animation support)
- B3D (. B3d)
- 3D Studio meshes (.3 ds)

Is available for the following platforms:
- Windows 98SE, ME, XP, Vista and Windows 7 (x86 abd x64)
Вложения
Тип файла: zip MP3D_Library_Threadsafe.zip (929.3 Кб, 144 просмотров)
2
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
17.08.2012, 14:45 4
Он крутой.

Добавлено через 2 часа 23 минуты
Блин, справка не на английском( Жестокая печаль.
0
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
17.08.2012, 15:01  [ТС] 5
Цитата Сообщение от Le Thaw Посмотреть сообщение
справка не на английском
Она на английском и на немецком (кажется).
То есть там одна строка на анлийском, а ниже перевод на немецкий.
Примерно так.
This ia a Alphaversion of the MP3D library for Purebasic. The engine works with Windows XP/Vista/7 and use DX9
Dies ist die AlphaVersion von MPs 3D Engine. Die Engine ist Windows XP/Vista kompatibel und verwendet DX9
1
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
17.08.2012, 15:25 6
ААа. Я думаю, что это за слова смешанные, что переводчик не переводит)

Добавлено через 40 секунд
Есть маленький вопрос. Как создать Entity из сетки? Не вижу такой функции.

Добавлено через 10 минут
Тут оказывается сетка сразу объект. Странно все.
0
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
17.08.2012, 15:34  [ТС] 7
Цитата Сообщение от Le Thaw Посмотреть сообщение
Как создать Entity из сетки?
Из примеров видно что сначала создается сетка MP_CreateMesh()
И из нее создается объект MP_PositionEntity().
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
MP_Graphics3D (640,480,0,1) ; Erstelle ein WindowsFenster #Window = 0
SetWindowTitle(0, "Names setzen") 
 
camera=MP_CreateCamera() ; Kamera erstellen
 
light=MP_CreateLight(1) ; Es werde Licht
 
Mesh=MP_CreateCube() ; Und jetzt eine Wьrfel
MP_EntitySetName(Mesh, "Mein Cube")
 
MP_PositionEntity (Mesh,0,0,5) ; Position des Wьrfels
 
While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder Windows Schliessen
 
    If MP_MouseButtonDown(0) ; Linke Maustaste gedrьckt?
    
         If GetFocus_()=WindowID(0) ; Fenster aktiv? 
             
             Meshfound = MP_PickCamera (camera,WindowMouseX(0),WindowMouseY(0))
 
             If Meshfound
             
                   MP_DrawText (10,20,MP_EntityGetName(Mesh),0,$ffff0000)
             
             EndIf
   
       EndIf
      EndIf
 
      MP_TurnEntity (Mesh,0.1,0.1,0.1) 
      MP_RenderWorld() ; Erstelle die Welt
      MP_Flip () ; Stelle Sie dar
 
Wend
1
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
17.08.2012, 19:08 8
Цитата Сообщение от locm Посмотреть сообщение
И из нее создается объект MP_PositionEntity()
Нет. Как я писал ранее. Сетка является объектом изначально.

Добавлено через 1 минуту
Это можно узнать, убрав позиционирование.

Добавлено через 32 минуты
Можно на этом движке сделать так, чтобы круг рисовался поверх объекта?. Или это делается редактированием текстуры? В чем я сомневаюсь. И как это сделать, я себе вообще не представляю.

Добавлено через 2 часа 24 минуты
Подскажите как работает эта функция MP_3Dto2D. Что это *pV.D3DXVector3?

Добавлено через 28 минут
Разобрался. Надо структуру создать.
0
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
17.08.2012, 19:09  [ТС] 9
Цитата Сообщение от Le Thaw Посмотреть сообщение
Подскажите как работает эта функция MP_3Dto2D
Судя по всему, преобразовывает 3D координаты в 2D.

Цитата Сообщение от Le Thaw Посмотреть сообщение
Что это *pV.D3DXVector3?
Указатель на структуру.
В справке написано.
pV.D3DXVector3 = Adresse of a 2d Point (x.f/y.f/z.f)
То есть структура имеет вид.
PureBasic
1
2
3
4
5
Structure D3DXVector3
  x.f
  y.f
  z.f
EndStructure
Примеры в которых есть функция MP_3Dto2D().
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine Beispielprogramme
;// Dateiname: MP_04_Static_Level.pb
;// Erstellt am: 15.5.2011
;// Update am  : 
;// Author: Michael Paulwitz
;// 
;// Info: 
;// Physic with different Meshs
;// Physik mit unterschiedlichen Meshs
;//
;//
;////////////////////////////////////////////////////////////////
 
 
Structure Liste
  Mesh.i
  Tyoe.i
EndStructure  
 
Structure vecf
  x.f
  y.f
  z.f
EndStructure  
 
Structure matrix
  m.f[16]
EndStructure  
 
Global NewList MyList.Liste()
Global NewMaterial
 
 
Procedure Newmesh ()
  
For n = 0 To 19  
  
AddElement(MyList())
 
Ergebnis = Random(9)   
If Ergebnis = 0  
    MyList()\Mesh = MP_CreateRetangle(5, 5, 5)
    MP_EntityPhysicBody(MyList()\Mesh, 2, 10)
ElseIf Ergebnis = 1   
    MyList()\Mesh = MP_CreateRetangle(7, 3, 5)
    MP_EntityPhysicBody(MyList()\Mesh, 2, 10)
ElseIf Ergebnis = 2   
    MyList()\Mesh = MP_CreateSphere(20)
    MP_ScaleMesh(MyList()\Mesh, 2.5,2.5,2.5)
    MP_EntityPhysicBody(MyList()\Mesh, 3, 10)
    MP_SetPhysicMaterialtoMesh (MyList()\Mesh, NewMaterial)
ElseIf Ergebnis = 3   
    MyList()\Mesh = MP_CreateSphere(20)
    MP_ScaleMesh(MyList()\Mesh, 4,2.5,2.5) 
    MP_EntityPhysicBody(MyList()\Mesh, 3, 10)
    MP_SetPhysicMaterialtoMesh (MyList()\Mesh, NewMaterial)
ElseIf Ergebnis = 4   
    MyList()\Mesh = MP_CreateTorus(2, 5, 12)
    MP_EntityPhysicBody(MyList()\Mesh, 4, 10)  
ElseIf Ergebnis = 5   
    MyList()\Mesh = MP_CreatePyramid(5, 5, 5) 
    MP_EntityPhysicBody(MyList()\Mesh, 4, 10)  
ElseIf Ergebnis = 6   
    MyList()\Mesh = MP_CreateTeapot()
    MP_ScaleMesh(MyList()\Mesh, 3,3,3)
    MP_EntityPhysicBody(MyList()\Mesh, 4, 10)  
ElseIf Ergebnis = 7     
  
  MyList()\Mesh = MP_Create3DText("Times","MP3D",10) 
    MP_EntityPhysicBody(MyList()\Mesh, 4, 10)  
ElseIf Ergebnis = 8     
    MyList()\Mesh = MP_CreateCone(10,5) 
    MP_ScaleMesh(MyList()\Mesh, 2.5,2.5,2.5)
    MP_EntityPhysicBody(MyList()\Mesh, 4, 10)  
ElseIf Ergebnis = 9     
    MyList()\Mesh = MP_CreateCylinder(15,5)   
    MP_ScaleMesh(MyList()\Mesh, 2.5,2.5,2.5)
    MP_EntityPhysicBody(MyList()\Mesh, 4, 10)  
EndIf
MP_EntitySetColor(MyList()\Mesh,MP_ARGB(255,Random(255),Random(255),Random(255))) 
 
MP_PositionEntity(MyList()\Mesh, 0, 40 + n*10,0)
 
Next n
 
EndProcedure
 
 
MP_Graphics3DWindow(0, 0, 1024, 768, "MP3D Physik Demo, Mouse to hit and move, Space to delete Meshs",0)
; MP_VSync(0)
light0 = MP_CreateLight(1)
MP_PositionEntity(light0, 0, 128, 0)
cam0 = MP_CreateCamera()
MP_CameraSetRange(cam0, 2, 2024)
MP_PositionCamera(cam0, -32, 64, -152)
MP_CameraLookAt(cam0, 0, 0, 0)
MP_PhysicInit()
 
NewMaterial = MP_CreatePhysicMaterial() 
MP_SetPhysicMaterialProperties(NewMaterial,1,0,0)
 
tex0 = MP_CreateTextureColor(128, 128, RGBA(0, 255, 0, 0))
 
tex0 = MP_LoadTexture("detail3.bmp")
MP_MaterialEmissiveColor(tex0, 0, 122, 132, 132)
 
;################ Bodenplatte ################
bodenplatte = MP_LoadMesh("Scene2.x"); Bodenplatte kann natьrlich auch ein x-beliebiges Mesh sein
 
 
 
MP_ScaleMesh( bodenplatte ,0.6,0.6,0.6)
MP_EntitySetTexture(bodenplatte, tex0)
 
;MP_RotateEntity (bodenplatte,0,0,16)
MP_EntityPhysicBody(bodenplatte, 1, 0)
 
Newmesh ()
 
While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow
  
    If MP_MouseButtonDown(0) ; Linke Maustaste gedrьckt?
     If Mouseon = 0
       Meshfound = MP_PickCamera (cam0,WindowMouseX(0),WindowMouseY(0))
       If Meshfound <> bodenplatte 
         Mouseon = 1
         MP_3Dto2D(MP_EntityGetX(Meshfound),MP_EntityGetY(Meshfound),MP_EntityGetZ(Meshfound), @pointPosit.vecf );=  box\m[12], box\m[13], box\m[14])
         KeyZ.f = pointPosit\z
         MP_EntitySetPhysic(Meshfound,0)
       EndIf  
     Else      
       MP_2Dto3D(WindowMouseX(0),WindowMouseY(0),KeyZ, @pointPosit )
       
       If Meshfound
          *Mesh.Matrix = MP_EntityGetMatrix (Meshfound)
          *Mesh\m[12] = pointPosit\x
        ;  If pointPosit\y <7
        ;     pointPosit\y = 7
        ;  EndIf  
          *Mesh\m[13] = pointPosit\y
          *Mesh\m[14] = pointPosit\z
         
           MP_3Dto2D(pointPosit\x,pointPosit\y,pointPosit\z, @pointPosit.vecf );=  box\m[12], box\m[13], box\m[14])
           MP_Circle (pointPosit\x, pointPosit\y, 30, MP_ARGB(0,255,0,0))
         
            MP_DrawText (100,40,"Mesh "+Str(Meshfound)+" found")
         EndIf
     EndIf
     
   Else
       MP_EntitySetPhysic(Meshfound,1)
       Mouseon = 0
   EndIf
  
  If MP_KeyDown(#PB_Key_Space)=1
     
      ForEach MyList()
        MP_FreeEntity(MyList()\Mesh)
        DeleteElement(MyList())
      Next
       Newmesh ()
      
    EndIf
  
  MP_PhysicUpdate()
  MP_RenderWorld()
  MP_Flip()  
Wend
 
MP_PhysicEnd()
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine Beispielprogramme
;// Dateiname: MP_Physic_CatchMove.pb
;// Erstellt am: 15.5.2011
;// Update am  : 
;// Author: Michael Paulwitz
;// 
;// Info: 
;// Catch Objekt and Moveit
;// Objekt nehmen und bewegen
;//
;//
;////////////////////////////////////////////////////////////////
Structure vecf
  x.f
  y.f
  z.f
EndStructure  
 
Structure matrix
  m.f[16]
EndStructure  
 
 
MP_Graphics3DWindow(0, 0, 800, 600, "MP3D Handle Demo, catch and move with mouse and Mousewheel w/s", 0)
 
light0 = MP_CreateLight(1)
MP_PositionEntity(light0, 0, 128, 0)
cam0 = MP_CreateCamera()
MP_CameraSetRange(cam0, 2, 2024)
MP_PositionCamera(cam0, -32, 64, -152)
MP_CameraLookAt(cam0, 0, 0, 0)
MP_PhysicInit()
 
tex0 = MP_LoadTexture("detail3.bmp")
tex1 = MP_LoadTexture("crate01.jpg")
 
 
 
;################ Bodenplatte ################
bodenplatte = MP_CreateRetangle(256, 1, 256) ; Bodenplatte kann natьrlich auch ein x-beliebiges Mesh sein
MP_ScaleMesh( bodenplatte ,0.6,0.6,0.6)
MP_EntitySetTexture(bodenplatte, tex0)
MP_EntityPhysicBody(bodenplatte, 1, 0)
;#############################################
 
Mesh = MP_CreateRetangle(5, 5, 5) 
MP_EntitySetTexture(Mesh , tex1)
MP_EntityPhysicBody(Mesh , 2, 10)
MP_PositionEntity(Mesh, 0, 20,0)
 
While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow
 
  If MP_MouseButtonDown(0) ; Linke Maustaste gedrьckt?
     If Mouseon = 0
       Meshfound = MP_PickCamera (cam0,WindowMouseX(0),WindowMouseY(0))
       Mouseon = 1
       MP_3Dto2D(MP_EntityGetX(Meshfound),MP_EntityGetY(Meshfound),MP_EntityGetZ(Meshfound), @pointPosit.vecf );=  box\m[12], box\m[13], box\m[14])
       KeyZ.f = pointPosit\z
       MP_EntitySetPhysic(Meshfound,0)
 
     Else      
       MP_2Dto3D(WindowMouseX(0),WindowMouseY(0),KeyZ, @pointPosit )
       
       If Meshfound
          *Mesh.Matrix = MP_EntityGetMatrix (Meshfound)
          *Mesh\m[12] = pointPosit\x
          If pointPosit\y <7
             pointPosit\y = 7
          EndIf  
          *Mesh\m[13] = pointPosit\y
          *Mesh\m[14] = pointPosit\z
         
           MP_3Dto2D(pointPosit\x,pointPosit\y,pointPosit\z, @pointPosit.vecf );=  box\m[12], box\m[13], box\m[14])
           MP_Circle (pointPosit\x, pointPosit\y, 30, MP_ARGB(0,255,0,0))
         
            MP_DrawText (100,40,"Mesh "+Str(Meshfound)+" found")
         EndIf
     EndIf
     
   Else
       MP_EntitySetPhysic(Meshfound,1)
       Mouseon = 0
   EndIf
     
   If MP_MouseDeltaWheel() > 0
      KeyZ.f +0.0003
   ElseIf  MP_MouseDeltaWheel() <0 
      KeyZ.f - 0.0003
   EndIf
   If MP_EntityGetY(Mesh) < -60
     MP_EntitySetY(Mesh,60)
     MP_EntitySetX(Mesh,0)
     MP_EntitySetZ(Mesh,0)
   EndIf  
     
  MP_PhysicUpdate()  
  MP_RenderWorld()
  MP_Flip()  
Wend
 
MP_PhysicEnd()
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
;////////////////////////////////////////////////////////////////
;//
;// Project Title: MP 3D Engine Beispielprogramme
;// Dateiname: MP_Physic_Wall1.pb
;// Erstellt am: 15.5.2011
;// Update am  : 
;// Author: Michael Paulwitz
;// 
;// Info: 
;// Physic with some cube Meshs
;// Physik mit einigen Wьrfeln
;//
;//
;////////////////////////////////////////////////////////////////
 
 
Structure vecf
  x.f
  y.f
  z.f
EndStructure  
 
Structure matrix
  m.f[16]
EndStructure  
 
 
MP_Graphics3DWindow(0, 0, 800, 600, "MP3D Wall1 Demo, catch and move the cubes, Space to reset", 0)
 
light0 = MP_CreateLight(1)
MP_PositionEntity(light0, 0, 128, 0)
cam0 = MP_CreateCamera()
MP_CameraSetRange(cam0, 2, 2024)
MP_PositionCamera(cam0, -32, 64, -152)
MP_CameraLookAt(cam0, 0, 0, 0)
MP_PhysicInit()
 
tex0 = MP_LoadTexture("detail3.bmp")
tex1 = MP_LoadTexture("crate01.jpg")
 
 
 
;################ Bodenplatte ################
bodenplatte = MP_CreateRetangle(256, 1, 256) ; Bodenplatte kann natьrlich auch ein x-beliebiges Mesh sein
MP_ScaleMesh( bodenplatte ,0.6,0.6,0.6)
MP_EntitySetTexture(bodenplatte, tex0)
MP_EntityPhysicBody(bodenplatte, 1, 0)
;#############################################
 
NewList TempMesh()
 
For m = 0 To 7
  For n = 0 To 7
  
    AddElement(TempMesh())
    TempMesh() = MP_CreateRetangle(5, 5, 5) 
    MP_EntitySetTexture(TempMesh() , tex1)
    MP_EntityPhysicBody(TempMesh(), 2, 10)
    MP_PositionEntity(TempMesh(), (m-4) * 6, n * 5.2 + 5 ,0)
  
  Next
Next 
  
 
While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow
 
  If MP_MouseButtonDown(0) ; Linke Maustaste gedrьckt?
     If Mouseon = 0
       Meshfound = MP_PickCamera (cam0,WindowMouseX(0),WindowMouseY(0))
       Mouseon = 1
       MP_3Dto2D(MP_EntityGetX(Meshfound),MP_EntityGetY(Meshfound),MP_EntityGetZ(Meshfound), @pointPosit.vecf );=  box\m[12], box\m[13], box\m[14])
       KeyZ.f = pointPosit\z
       MP_EntitySetPhysic(Meshfound,0)
 
     Else      
       MP_2Dto3D(WindowMouseX(0),WindowMouseY(0),KeyZ, @pointPosit )
       
       If Meshfound
          *Mesh.Matrix = MP_EntityGetMatrix (Meshfound)
          *Mesh\m[12] = pointPosit\x
          If pointPosit\y <7
             pointPosit\y = 7
          EndIf  
          *Mesh\m[13] = pointPosit\y
          *Mesh\m[14] = pointPosit\z
         
          MP_3Dto2D(pointPosit\x,pointPosit\y,pointPosit\z, @pointPosit.vecf );=  box\m[12], box\m[13], box\m[14])
          MP_Circle (pointPosit\x, pointPosit\y, 30, MP_ARGB(0,255,0,0))
          
          MP_EntitySetPhysicMatrix (Meshfound, *Mesh)
          
          MP_DrawText (100,40,"Mesh "+Str(Meshfound)+" found")
          
        EndIf
     EndIf
     
   Else
       MP_EntitySetPhysic(Meshfound,1)
       Mouseon = 0
   EndIf
     
   If MP_MouseDeltaWheel() > 0
      KeyZ.f +0.0003
   ElseIf  MP_MouseDeltaWheel() <0 
      KeyZ.f - 0.0003
   EndIf
   
   If MP_KeyDown(#PB_Key_Space)=1
      FirstElement(TempMesh()) 
      
      For m = 0 To 7
        For n = 0 To 7
          
          MP_EntityResetPhysic(TempMesh())
          MP_PositionEntity(TempMesh(), (m-4) * 6, n * 5.2 + 5 ,0)
          NextElement(TempMesh()) 
 
        Next
      Next 
 
   EndIf
   
   MP_DrawText (1,1,"FPS = "+Str(MP_FPS()))
   
  MP_PhysicUpdate()  
  
  MP_RenderWorld()
  
  MP_Flip()  
Wend
 
MP_PhysicEnd()
1
37 / 37 / 1
Регистрация: 07.09.2010
Сообщений: 752
17.08.2012, 23:32 10
pV.D3DXVector3 = Adresse of a 2d Point (x.f/y.f/z.f)
Я думал что это опечатка. Потому что зачем z координата?

Добавлено через 4 минуты
А как свет работает? Посмотрел пример с тенью на шахматы, там нормально. Создаю такой же свет, а он светит в одно и тоже место, но с разной силой, в зависимости от направления света, по идее как и должно быть, но все же что-то не так. Меняю его расположение, а он все равно в начало координат светит. Почему так?

Добавлено через 3 часа 31 минуту
Оказалось, что он работает так с плоскими(не объемными) фигурами. Очень печально.

Добавлено через 39 минут
В нем даже меньше возможностей и больше багов чем в огре. Зря радовался( Первое впечатление обманчиво. Прозрачность объекта не сделать. Прозрачность текстуры(какого-то объекта) на фоне других объектов вообще бред, а не прозрачность. Свет не доработан. И думаю еще куча багов...
0
17.08.2012, 23:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2012, 23:32
Помогаю со студенческими работами здесь

2д Движок
Наконец-то закончил одно дельце))) Могу взяться за то что хотел.За написание игры) Конечно вообще...

Движок
Подскажыте пожалуста хорошый движок для автобазара.

Движок
Люди подкиньте бесплатный движок под сайтик, если не правильно сказал, то поправьте! ucoz не...

Движок
Здрасте всем. Вопрос в следующем. Есть сайт страниц 100 на html. Сейчас проиндексировано 85...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru