Hallo,
ich wollte mal anfragen, ob es möglich ist die Orientierung eines mit python erzeugten 3dimensionalen Objektes in einem 3dimensionalen raum zu verändern.
Wenn ja, wie mach ich das? (Das Object habe ich bereits erstellt)
Kann ich die für die Drehung benötigte matrize in python ausrechnen lassen?
Matrizenberechnung in Python
Hoi,
ja, das ist möglich. Kennst Du die scipy-Seite?
Um aber spezifischer zu werden, mußt Du schon sagen, um was für eine Art Objekt es sich handelt (Ist es ein array aus Koordinaten (x, y, z). ein "Vektorsammelsurium" oder etwas Anderes?
Gruß,
Christian
ja, das ist möglich. Kennst Du die scipy-Seite?
Um aber spezifischer zu werden, mußt Du schon sagen, um was für eine Art Objekt es sich handelt (Ist es ein array aus Koordinaten (x, y, z). ein "Vektorsammelsurium" oder etwas Anderes?
Gruß,
Christian
Mit Blender kenn ich mich nicht aus, aber ich würde vermuten, daß man da besser direkt auf Blender zurückgreift, als selber zu programmieren. Rebecca oder sonst wer, wißt ihr mehr?
also das problem ist, dass ich nicht immer per hand die objekte verändern will um sie dann später die matrizen in mein script einbauen zu können.
Ich will einfach meinem script sagen rotiere das object um 10° oder so ähnlich. Ist das irgendwie möglich?
Ich will einfach meinem script sagen rotiere das object um 10° oder so ähnlich. Ist das irgendwie möglich?
Auf der Blenderseite gibt es eingie Pythonscripts, u. a. dieses hier:
http://saltshaker.sourceforge.net/
Das sieht ziemlich einfach aus. Allerdings ist die Einheit wohl Radian und nicht Grad, oder? Und es wird in diesem Beispiel auch nicht mit Rotationsmatrixes gearbeitet (jedenfalls nicht im Vordergrund).
Also, ich steige wegen Ahnungslosigkeit (bei Blender) an dieser Stelle aus dem Thread aus. Viel Erfolg noch!
Gruß,
Christian
http://saltshaker.sourceforge.net/
Das sieht ziemlich einfach aus. Allerdings ist die Einheit wohl Radian und nicht Grad, oder? Und es wird in diesem Beispiel auch nicht mit Rotationsmatrixes gearbeitet (jedenfalls nicht im Vordergrund).
Also, ich steige wegen Ahnungslosigkeit (bei Blender) an dieser Stelle aus dem Thread aus. Viel Erfolg noch!
Gruß,
Christian
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Dem aktuell selektierten Objekt eine Rotation um 45 Grad um die x-Achse verpassen:
EDIT:
Blender.mathutils ist auch noch ganz interessant, z.B. erstellt RotationMatrix(angle, matSize, axisFlag, axis) eine Rotationsmatrix. Aber der oben gezeigte Weg ist der einfachste.
Code: Alles auswählen
import Blender
from math import radians
obj = Blender.Object.GetSelected()[-1]
obj.RotX = radians(45)
Blender.Redraw()
EDIT:
Blender.mathutils ist auch noch ganz interessant, z.B. erstellt RotationMatrix(angle, matSize, axisFlag, axis) eine Rotationsmatrix. Aber der oben gezeigte Weg ist der einfachste.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
OK, bevor ich jetzt weiterrate und wieder daneben liege: Was genau willst du machen? Was fuer Zeilen von Python-Code hast du schon?
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Code: Alles auswählen
from GameLogic import*
cont = GameLogic.getCurrentController()
mouseOver = cont.getSensor("mouseOver")
mouseDown = cont.getSensor("mouseDown")
obj = cont.getOwner()
obj_target = mouseOver.getHitObject()
scene = getCurrentScene()
#Definition der Objektnamen
Cone = scene.getObjectList()["OBCone"]
Cube = scene.getObjectList()["OBCube"]
Circle = scene.getObjectList()["OBCircle"]
Torus = scene.getObjectList()["OBTorus"]
Checkboard = scene.getObjectList()["OBCheckboard"]
#Neue Orientierungen
oriCone1 = [0.79484083803575145, -0.48135309646484581, 0.36949592516606883], [0.58819376646204524, 0.76084813349148772, -0.2741134999552417], [-0.14918490300904194, 0.43521180393714526, 0.88788205885013727]
oriCube1 = [0.8987499323613598, 0.41711800035975705, -0.13513375912897868], [-0.36439003665576242, 0.88197387191389609, 0.29890130552947186], [0.2438615596326392, -0.21939613268489547, 0.94466760116797088]
oriCircle1 = [0.93587802375991447, -0.29844166639029129, 0.18725623195350016], [0.33183444880266938, 0.92525368869643387, -0.18382467228713142], [-0.11839857782535036, 0.23417553953354897, 0.96495781952016213]
oriTorus1 = [0.66783931754252024, -0.55903550549107239, 0.49139591934068982], [0.73201471240079519, 0.61280379382843486, -0.29770114393172559], [-0.13470377416064364, 0.55852557136609071, 0.81847668223172987]
#Bedingung 1 (Cone)
def Bed_1():
Cone.setOrientation(oriCone1)
obj.Cone = obj.Cone+1
#Bedingung 2 (Cube)
def Bed_2():
Cube.setOrientation(oriCube1)
obj.Cone = obj.Cube+1
#Bedingung 3 (Circle)
def Bed_3():
Circle.setOrientation(oriCircle1)
obj.Cone = obj.Circle+1
#Bedingung 4 (Torus)
def Bed_4():
Torus.setOrientation(oriTorus1)
obj.Cone = obj.Torus+1
if obj.Trial < 21:
i = obj.Trial-1
if l[i] in (1, 5, 9, 13, 17):
Bed_1()
obj.Cone = obj.Cone+1
obj.changed = 1
if l[i] in (2, 6, 10, 14, 18):
Bed_2()
obj.Cube = obj.Cube+1
obj.changed = 2
if l[i] in (3, 7, 11, 15, 19):
Bed_3()
obj.Circle = obj.Circle+1
obj.changed = 3
if l[i] in (4, 8, 12, 16, 20):
Bed_4()
obj.Torus = obj.Torus+1
obj.changed = 4
Intention:
ich habe 4 Objekte die ich drehen will.
zur Zeit habe ich die neue orientierung noch per hand eingegeben.
ich will es aber so verändern, dass eine zufallszahl erzeugt wird und dann das object um den wert der zufallszahl gedreht wird (um die x achse).