Hi,
ich versuche derzeit die Truevision 3D Engine mithilfe von COM in Autoit zu nutzen. Nach ersten Erfolgen kristallisieren sich zwei Hauptprobleme:
1. Es sieht so aus, als ob ich keine Funktion aufrufen kann, die einen Wert zurück gibt.
Z.B. funktioniert folgendes einwandfrei, während das Beispel darunter den darauf folgenden Fehler verursacht.
$oTVEngine.Clear()
$oTVscene.RenderAll(True,True)
$oTVEngine.RenderToScreen()
If _IsPressed("28") Then
$x = $oTVcamera.GetPosition.x()
ConsoleWrite("act x:" & $x)
$y = $oTVcamera.GetPosition.y()
ConsoleWrite("act y:" & $y)
$z = $oTVcamera.GetPosition.z()
ConsoleWrite("act z:" & $z)
$oTVcamera.SetPosition($x, $y, $z + 1)
EndIf
Hier erhalte ich folgenden Fehler:
: ==> The requested action with this object has failed.:
$x = $oTVcamera.GetPosition.x()
$x = $oTVcamera.GetPosition^ ERROR
Weder das, noch
$x = $oTVcamera.GetPosition().x
[/autoit]
oder
$x = $oTVcamera.GetPosition()
[/autoit]
funktioniert.
Allerdings habe ich mit der "gegenteiligen" Methode .SetPosition() keine Probleme.
Es scheint so, dass ich bei jeder Funktion die etwas zurückgibt einen Fehler erhalte.
Wenn ich mit dem Error-Handler den Fehler abfange sagt der mir "Parameter falsch", Fehlercode:80070057.
Wenn ich diesen Fehler abfange und die Engine noch etwas laufen lasse, dann erhalte ich nach kurzer Zeit wieder einen
abgefangenen Fehler, diesmal "Typkonflikt", Fehlercode:80020005. Möglicherweise hat dieser Fehler auch etwas damit zu tun...
Die Instanzierung und das nutzen von Methoden ohne Rückgabewert funktioniert allerdings einwandfrei:
[autoit]
$oTVcamera = ObjCreate("TV3D65.TVCamera")
With $oTVcamera
.SetViewFrustum(45, 10000)
.SetCamera(250, 550, 250,0,0,0)
EndWith
2. Habe ich ein Problem mit der Übergabe von Fenster handles, weswegen es mir derzeit nur möglich ist, die Engine im Fullscreen-mode zu initialisieren:
[autoit]
With $oTVEngine
.Init3DFullscreen(800,600) ;funktioniert
;.Init3DWindowed($hWin, True) ;Dies allerdings nicht.
EndWith
Ich nutze Win 7 Starter x86, Autoit 3.3.6.1 & Truevision 3d SDK 6.5
Danke für eure Antwort im Voraus
Dr.Doktor