PickedVertex + Illegal Memory Access

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

exastion

Betreff: PickedVertex + Illegal Memory Access

BeitragDi, Nov 01, 2011 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe ein problem mit dieser Funktion, die ich im Forum gefunden habe:

BlitzBasic: [AUSKLAPPEN]
Function PickedVertex() 

mesh = PickedEntity()
surf = PickedSurface()
tri = PickedTriangle()

px# = PickedX()
py# = PickedY()
pz# = PickedZ()

v0 = TriangleVertex(surf,tri,0)
v1 = TriangleVertex(surf,tri,1)
v2 = TriangleVertex(surf,tri,2)

TFormPoint VertexX(surf,v0),VertexY(surf,v0),VertexZ(surf,v0),mesh,0
dx# = TFormedX - px
dy# = TFormedY - py
dz# = TFormedZ - pz
v0d# = dx*dx + dy*dy + dz*dz

TFormPoint VertexX(surf,v1),VertexY(surf,v1),VertexZ(surf,v1),mesh,0
dx# = TFormedX - px
dy# = TFormedY - py
dz# = TFormedZ - pz
v1d# = dx*dx + dy*dy + dz*dz

TFormPoint VertexX(surf,v2),VertexY(surf,v2),VertexZ(surf,v2),mesh,0
dx# = TFormedX - px
dy# = TFormedY - py
dz# = TFormedZ - pz
v2d# = dx*dx + dy*dy + dz*dz

If (v0d < v1d) And (v0d < v2d) Then Return v0
If (v1d < v0d) And (v1d < v2d) Then Return v1

Return v2

End Function


Ich bekomme die Fehlermeldung Illegal Memory Access bei der Zeile :
BlitzBasic: [AUSKLAPPEN]
v0 = TriangleVertex(surf,tri,0)


Ich hoff es kann mir jemand helfen.

MfG exa

Tankbuster

BeitragDi, Nov 01, 2011 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
surf oder tri existieren nicht. Es kann eventuell daher kommen, dass garkein Surface/Polygon gepickt wurde. Würde ich jetzt als erstes vermuten... versuch das mal:

BlitzBasic: [AUSKLAPPEN]
Function PickedVertex() 

mesh = PickedEntity()

If mesh <> 0 Then ;---------------------------
surf = PickedSurface()
tri = PickedTriangle()

px# = PickedX()
py# = PickedY()
pz# = PickedZ()

v0 = TriangleVertex(surf,tri,0)
v1 = TriangleVertex(surf,tri,1)
v2 = TriangleVertex(surf,tri,2)

TFormPoint VertexX(surf,v0),VertexY(surf,v0),VertexZ(surf,v0),mesh,0
dx# = TFormedX - px
dy# = TFormedY - py
dz# = TFormedZ - pz
v0d# = dx*dx + dy*dy + dz*dz

TFormPoint VertexX(surf,v1),VertexY(surf,v1),VertexZ(surf,v1),mesh,0
dx# = TFormedX - px
dy# = TFormedY - py
dz# = TFormedZ - pz
v1d# = dx*dx + dy*dy + dz*dz

TFormPoint VertexX(surf,v2),VertexY(surf,v2),VertexZ(surf,v2),mesh,0
dx# = TFormedX - px
dy# = TFormedY - py
dz# = TFormedZ - pz
v2d# = dx*dx + dy*dy + dz*dz

If (v0d < v1d) And (v0d < v2d) Then Return v0
If (v1d < v0d) And (v1d < v2d) Then Return v1

Return v2
EndIf ;-----------------

End Function
Twitter
Download Jewel Snake!
Windows|Android
 

exastion

BeitragDi, Nov 01, 2011 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das jetzt geändert, aber jetzt kommt die Fehlermeldung bei Code: [AUSKLAPPEN]
End Function


mesh = 0
surf = 0
tri = 65535

BladeRunner

Moderator

BeitragDi, Nov 01, 2011 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann es sein dass dein Mesh einfach zu komplex für DX7 ist?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

exastion

BeitragDi, Nov 01, 2011 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Das weiß ich nicht, es ist ein terrain.
Klappt da CameraPick() überhaupt?
Wenn nicht, dann ist das Problem gelöst.

MfG exa

ZEVS

BeitragDi, Nov 01, 2011 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessant, ein Triangle ohne Mesh und Surface... Bzw., die Id des Triangles ist als Binärcode 1111 1111 1111 1111, auch merkwürdig...
Auch wenn es nicht direkt dein Problem betrifft, so möchte ich dir langwieriges Debuggen und evtl. Threaderstellen ersparen:
Zitat:
BlitzBasic: [AUSKLAPPEN]
dx# = TFormedX - px 

TFormedX wird zwar als Funktion gehighlighted, aber nicht als solche kompiliert sondern als unbekannte Variable! Du kannst zwar bei Funktionsaufrufen machmal die Klammern weglassen, hier aber nicht.

ZEVS
 

exastion

Betreff: Gelöst

BeitragMi, Nov 02, 2011 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Als ich das ganze auf eine Andere Weise lösen wollte ist mir aufgefallen, dass ich entitypickmode() vergessen hatte.

Danke trotzdem für eure Hilfe

MfG exa

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group