Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 10:43

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kollisionserkennung
BeitragVerfasst: So Aug 21, 2005 09:26 
Offline
DGL Member

Registriert: Mo Jul 25, 2005 11:40
Beiträge: 15
Hi,

ich habe zwei Räume, leider kann man bisher noch durch die Wände laufen. Wie kann ich das verhindern.
[ist nur ein Raum]
Code:
  1.  
  2. procedure draw_raum1;
  3. begin
  4. floor.bind;
  5. gldepthmask(gl_false);
  6. glbegin(gl_quads);
  7. gltexcoord2f(0,0);             // Raum1 Fußboden
  8. glvertex3f(-4,0,8);
  9. gltexcoord2f(8,0);
  10. glvertex3f(4,0,8);
  11. gltexcoord2f(8,16);
  12. glvertex3f(4,0,-8);
  13. gltexcoord2f(0,16);
  14. glvertex3f(-4,0,-8);
  15. glend;
  16.  
  17. glenable(gl_blend);
  18. glblendfunc(gl_dst_color, gl_zero);
  19. gldepthmask(gl_true);
  20. light1.bind;
  21. glbegin(gl_quads);
  22. gltexcoord2f(0,0);             // Raum1 Fußboden-Licht
  23. glvertex3f(-4,0,8);
  24. gltexcoord2f(1,0);
  25. glvertex3f(4,0,8);
  26. gltexcoord2f(1,2);
  27. glvertex3f(4,0,-8);
  28. gltexcoord2f(0,2);
  29. glvertex3f(-4,0,-8);
  30. glend;
  31. gldisable(gl_blend);
  32.  
  33. gldepthmask(gl_false);
  34. wall1.Bind;
  35. glbegin(gl_quads);            //Wand Hinten
  36. gltexcoord2f(0,0);
  37. glvertex3f(-4,0,-8);
  38. gltexcoord2f(8,0);
  39. glvertex3f(4,0,-8);
  40. gltexcoord2f(8,1);
  41. glvertex3f(4,2,-8);
  42. gltexcoord2f(0,1);
  43. glvertex3f(-4,2,-8);
  44. glend;
  45. gldepthmask(gl_true);
  46.  
  47.  
  48. glenable(gl_blend);
  49. glblendfunc(gl_dst_color, gl_zero);
  50. light2.bind;
  51. glbegin(gl_quads);            //Raum1 Wand Hinten-Licht
  52. gltexcoord2f(0,0);
  53. glvertex3f(-4,0,-8);
  54. gltexcoord2f(1,0);
  55. glvertex3f(4,0,-8);
  56. gltexcoord2f(1,1);
  57. glvertex3f(4,2,-8);
  58. gltexcoord2f(0,1);
  59. glvertex3f(-4,2,-8);
  60. glend;
  61. gldisable(gl_blend);
  62.  
  63. wall1.bind;                  //Raum1 Wand Vorne
  64. gldepthmask(gl_false);
  65. glbegin(gl_quads);
  66. gltexcoord2f(0,0);
  67. glvertex3f(-4,0,8);
  68. gltexcoord2f(8,0);
  69. glvertex3f(4,0,8);
  70. gltexcoord2f(8,1);
  71. glvertex3f(4,2,8);
  72. gltexcoord2f(0,1);
  73. glvertex3f(-4,2,8);
  74. glend;
  75. gldepthmask(gl_true);
  76.  
  77. glenable(gl_blend);
  78. glblendfunc(gl_dst_color, gl_zero);
  79. light2.bind;
  80. glbegin(gl_quads);          // Raum1 Wand Vorne-Licht
  81. gltexcoord2f(0,0);
  82. glvertex3f(-4,0,8);
  83. gltexcoord2f(1,0);
  84. glvertex3f(4,0,8);
  85. gltexcoord2f(1,1);
  86. glvertex3f(4,2,8);
  87. gltexcoord2f(0,1);
  88. glvertex3f(-4,2,8);
  89. glend;
  90. gldisable(gl_blend);
  91.  
  92. gldepthmask(gl_false);
  93. wall1.bind;                //Raum1 Wand Links
  94. glbegin(gl_quads);
  95. gltexcoord2f(0,0);
  96. glvertex3f(-4,0,-8);
  97. gltexcoord2f(16,0);
  98. glvertex3f(-4,0,8);
  99. gltexcoord2f(16,1);
  100. glvertex3f(-4,2,8);
  101. gltexcoord2f(0,1);
  102. glvertex3f(-4,2,-8);
  103. glend;
  104. gldepthmask(gl_true);
  105.  
  106. glenable(gl_blend);
  107. glblendfunc(gl_dst_color, gl_zero);
  108. light2.bind;
  109. glbegin(gl_quads);          // Raum1 Wand Links-Licht
  110. gltexcoord2f(0,0);
  111. glvertex3f(-4,0,-8);
  112. gltexcoord2f(2,0);
  113. glvertex3f(-4,0,8);
  114. gltexcoord2f(2,1);
  115. glvertex3f(-4,2,8);
  116. gltexcoord2f(0,1);
  117. glvertex3f(-4,2,-8);
  118. glend;
  119. gldisable(gl_blend);
  120.  
  121. gldepthmask(gl_false);
  122. wall1.bind;              //Raum1 Wand Rechts
  123. glbegin(gl_quads);
  124. gltexcoord2f(0,0);
  125. glvertex3f(4,0,-4);
  126. gltexcoord2f(12,0);
  127. glvertex3f(4,0,8);
  128. gltexcoord2f(12,1);
  129. glvertex3f(4,2,8);
  130. gltexcoord2f(0,1);
  131. glvertex3f(4,2,-4);
  132.                    
  133. gltexcoord2f(0,0);           //Raum1 Wand Rechts II
  134. glvertex3f(4,0,-7);
  135. gltexcoord2f(1,0);
  136. glvertex3f(4,0,-8);
  137. gltexcoord2f(1,1);
  138. glvertex3f(4,2,-8);
  139. gltexcoord2f(0,1);
  140. glvertex3f(4,2,-7);
  141. glend;
  142. gldepthmask(gl_true);
  143.  
  144.  
  145. glenable(gl_blend);
  146. glblendfunc(gl_dst_color, gl_zero);
  147. light2.bind;
  148. glbegin(gl_quads);          // Raum1 Wand RechtsI-Licht
  149. gltexcoord2f(0,0);
  150. glvertex3f(4,0,-4);
  151. gltexcoord2f(1.5,0);
  152. glvertex3f(4,0,8);
  153. gltexcoord2f(1.5,1);
  154. glvertex3f(4,2,8);
  155. gltexcoord2f(0,1);
  156. glvertex3f(4,2,-4);
  157.  
  158. gltexcoord2f(0,0);         // Raum1 Wand RechtsII-Licht
  159. glvertex3f(4,0,-7);
  160. gltexcoord2f(0.875,0);
  161. glvertex3f(4,0,-8);
  162. gltexcoord2f(0.875,1);
  163. glvertex3f(4,2,-8);
  164. gltexcoord2f(0,1);
  165. glvertex3f(4,2,-7);
  166. glend;
  167. gldisable(gl_blend);
  168.  
  169.  
  170. gldepthmask(gl_false);
  171. top.bind;
  172. glbegin(gl_quads);           // Raum1 Decke
  173. gltexcoord2f(0,0);            
  174. glvertex3f(-4,2,8);
  175. gltexcoord2f(8,0);
  176. glvertex3f(4,2,8);
  177. gltexcoord2f(8,16);
  178. glvertex3f(4,2,-8);
  179. gltexcoord2f(0,16);
  180. glvertex3f(-4,2,-8);
  181. glend;
  182. gldepthmask(gl_true);
  183.  
  184.  
  185. glenable(gl_blend);
  186. glblendfunc(gl_dst_color, gl_zero);
  187. gldepthmask(gl_true);
  188. light1.bind;
  189. glbegin(gl_quads);
  190. gltexcoord2f(0,0);             // Raum1 Decke-Licht
  191. glvertex3f(-4,2,8);
  192. gltexcoord2f(1,0);
  193. glvertex3f(4,2,8);
  194. gltexcoord2f(1,2);
  195. glvertex3f(4,2,-8);
  196. gltexcoord2f(0,2);
  197. glvertex3f(-4,2,-8);
  198. glend;
  199. gldisable(gl_blend);
  200.  
  201. wall1.bind;                        //Lampe1 (Raum1)
  202. glcolor3f(0.8,0.8,0.<!-- s8) --><img src=\"{SMILIES_PATH}/icon_cool.gif\" alt=\"8)\" title=\"Cool\" /><!-- s8) -->;
  203. glbegin(gl_quads);
  204. gltexcoord2f(0,0);
  205. glvertex3f(-0.25,1.95,-4.25);
  206. gltexcoord2f(1,0);
  207. glvertex3f(0.25,1.95,-4.25);
  208. gltexcoord2f(1,1);
  209. glvertex3f(0.25,2,-4.25);
  210. gltexcoord2f(1,1);
  211. glvertex3f(-0.25,2,-4.25);
  212.  
  213. gltexcoord2f(0,0);
  214. glvertex3f(-0.25,1.95,-3.75);
  215. gltexcoord2f(1,0);
  216. glvertex3f(0.25,1.95,-3.75);
  217. gltexcoord2f(1,1);
  218. glvertex3f(0.25,2,-3.75);
  219. gltexcoord2f(1,1);
  220. glvertex3f(-0.25,2,-3.75);
  221.  
  222. gltexcoord2f(0,0);
  223. glvertex3f(-0.25,1.95,-3.75);
  224. gltexcoord2f(1,0);
  225. glvertex3f(-0.25,1.95,-4.25);
  226. gltexcoord2f(1,1);
  227. glvertex3f(-0.25,2,-4.25);
  228. gltexcoord2f(1,1);
  229. glvertex3f(-0.25,2,-3.75);
  230.  
  231. gltexcoord2f(0,0);
  232. glvertex3f(0.25,1.95,-3.75);
  233. gltexcoord2f(1,0);
  234. glvertex3f(0.25,1.95,-4.25);
  235. gltexcoord2f(1,1);
  236. glvertex3f(0.25,2,-4.25);
  237. gltexcoord2f(1,1);
  238. glvertex3f(0.25,2,-3.75);
  239. glend;
  240.  
  241. light.bind;
  242. glbegin(gl_quads);
  243. gltexcoord2f(0,0);
  244. glvertex3f(0.25,1.95,-3.75);
  245. gltexcoord2f(1,0);
  246. glvertex3f(0.25,1.95,-4.25);
  247. gltexcoord2f(1,2);
  248. glvertex3f(-0.25,1.95,-4.25);
  249. gltexcoord2f(0,2);
  250. glvertex3f(-0.25,1.95,-3.75);
  251. glend;
  252.  
  253.  
  254.  
  255. wall1.bind;                        //Lampe2 (Raum1)
  256. glcolor3f(0.8,0.8,0.<!-- s8) --><img src=\"{SMILIES_PATH}/icon_cool.gif\" alt=\"8)\" title=\"Cool\" /><!-- s8) -->;
  257. glbegin(gl_quads);
  258. gltexcoord2f(0,0);
  259. glvertex3f(-0.25,1.95,4.25);
  260. gltexcoord2f(1,0);
  261. glvertex3f(0.25,1.95,4.25);
  262. gltexcoord2f(1,1);
  263. glvertex3f(0.25,2,4.25);
  264. gltexcoord2f(1,1);
  265. glvertex3f(-0.25,2,4.25);
  266.  
  267. gltexcoord2f(0,0);
  268. glvertex3f(-0.25,1.95,3.75);
  269. gltexcoord2f(1,0);
  270. glvertex3f(0.25,1.95,3.75);
  271. gltexcoord2f(1,1);
  272. glvertex3f(0.25,2,3.75);
  273. gltexcoord2f(1,1);
  274. glvertex3f(-0.25,2,3.75);
  275.  
  276. gltexcoord2f(0,0);
  277. glvertex3f(-0.25,1.95,3.75);
  278. gltexcoord2f(1,0);
  279. glvertex3f(-0.25,1.95,4.25);
  280. gltexcoord2f(1,1);
  281. glvertex3f(-0.25,2,4.25);
  282. gltexcoord2f(1,1);
  283. glvertex3f(-0.25,2,3.75);
  284.  
  285. gltexcoord2f(0,0);
  286. glvertex3f(0.25,1.95,3.75);
  287. gltexcoord2f(1,0);
  288. glvertex3f(0.25,1.95,4.25);
  289. gltexcoord2f(1,1);
  290. glvertex3f(0.25,2,4.25);
  291. gltexcoord2f(1,1);
  292. glvertex3f(0.25,2,3.75);
  293. glend;
  294.  
  295. light.bind;
  296. glbegin(gl_quads);
  297. gltexcoord2f(0,0);
  298. glvertex3f(0.25,1.95,3.75);
  299. gltexcoord2f(1,0);
  300. glvertex3f(0.25,1.95,4.25);
  301. gltexcoord2f(1,2);
  302. glvertex3f(-0.25,1.95,4.25);
  303. gltexcoord2f(0,2);
  304. glvertex3f(-0.25,1.95,3.75);
  305. glend;
  306.  
  307. glcolor3f(1,1,1);
  308. end;
  309.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 21, 2005 11:07 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Nun ein langes Listing des Codes hilft da niemanden weiter. Gerade bei einem sehr einfachen Raum wie diesen ist dies sehr schnell realisiert und nicht komplexer als in einem 2D-Raum. Wird eine Taste gedrückt wird die aktuelle Position des Spielers überprüft. Will diese nach vorne bewegen auf 10, dort allerdings eine Wand steht, wird der Befehl nicht ausgeführt. Es ist also nicht mehr als eine einfache IF-Abfrage
Code:
  1. if key=up then
  2.   if player.y+1 < 10 then moveup;

Das ganze wird natürlich bei größeren Gebilden komplex und sollte vermutlich über arrays laufen in denen die Grenzen des Gebildes festgehalten werden.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 21, 2005 14:24 
Offline
DGL Member

Registriert: Sa Sep 21, 2002 21:32
Beiträge: 346
Wohnort: Eilsum (Nahe Emden)
Diese ganzen Koordinaten kenne ich doch:

http://www.dcw-group.net/content/tuts/c ... Part13.zip

*augenroll* *garnichts mehr sag* *auf den Source hinweiß*

_________________
Es sind immer die guten,
welche zu früh von uns gehen müssen...

Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net
Neu! Ein großer Teil der Demos nach Kylix übersetzt!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 21, 2005 22:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 18:19
Beiträge: 165
Wohnort: Cologne
lieber DCW_Mr_T.... ich hab einen bug gefunden... nach starten des projektes (aus winrar heraus) lädt zunächst das Programm ganz normal, ein dreidimensionaler Raum erscheint. Sobald ich jedoch mit der Maus auf das Fenster klicke ERSCHEINEN TAUSENDE MESSAGE-BOXES UND MEIN WINDOWS 2000 STÜRZT MIT EINEM BSOD AB$%/(§$/(§$&&!"!&!°!!!!1!einseins!1.... aber ich bin ja nicht nachtragend :twisted: .... sowas passiert schonmal, und ich hatte zum glück nichts wichtiges ungespeichert.

und zu dem vorfall dass dir die koordinaten bekannt vorkommen: ich find zum lernen ist das überhaupt nicht schlecht, als ich programmieren angefangen habe (mit, uhm... 12? 13?) hab ich anfangs auch erstmal die ganzen beispiele aus meinem pascal5 buch abgetippt... :D

_________________
www.omfg.biz - aktuelles projekt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 22, 2005 08:14 
Offline
DGL Member

Registriert: Sa Sep 21, 2002 21:32
Beiträge: 346
Wohnort: Eilsum (Nahe Emden)
Also ich muss sagen, dass ich diesen Fehler so nicht nachvollziehen kann ... es muss aber wohl denn an der etwas üblen implementierung von Selection liegen ... was für ne Grafikkarte verwendest du mit welchen Treibern? Auf meiner R9600 Pro mit Cath 5.6 läuft das ganze problemfrei.

_________________
Es sind immer die guten,
welche zu früh von uns gehen müssen...

Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net
Neu! Ein großer Teil der Demos nach Kylix übersetzt!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 22, 2005 20:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 24, 2003 18:19
Beiträge: 165
Wohnort: Cologne
geforce4 ti4200, 77.72 (nicht die neusten treiber). eventuell start ich's nochmal neu um zu gucken was die fehlermeldung überhaupt beinhaltete... ka was da passiert ist, villeicht sollte ich einfach nur mal meinen kapputen grafikkarten-kühler auswechseln.

_________________
www.omfg.biz - aktuelles projekt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 22, 2005 22:25 
Offline
DGL Member

Registriert: Sa Sep 21, 2002 21:32
Beiträge: 346
Wohnort: Eilsum (Nahe Emden)
Also das es am Kühler liegt gleibe ich eher nicht^^
Ich habe nur schon des öfteren bei unterschiedlichen Grakas bemerkt, das die Selection manchmal nicht fehlerfrei läuft so wie ich die in dem Progrämmchen implementiert habe ... wieso weiß ich auch nicht so recht ... vielleicht hat wer anderes Ahnung davon, ob es da unterschiedliche Versionen in unterschiedlichen Treibern gibt, die anders angesprochen werden müssen ?

_________________
Es sind immer die guten,
welche zu früh von uns gehen müssen...

Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net
Neu! Ein großer Teil der Demos nach Kylix übersetzt!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 16 Queries | GZIP : On ]