Place an Objet with obj.SetMg(m)
-
On 04/07/2014 at 00:35, xxxxxxxx wrote:
Hi,
I want to place an Object on a given global Koordinate.
What i have is a Matrix with 16 Values like:
"1,0,0,0,0,1,0,0,0,0,1,0,0,0,5,1.439"I read the documentation and found in the Topic "Matrix Fundamentals"
that my matix is like this:1 0 0 0 1 0 0 0 v0.x v1.x v2.x v3.x 0 1 0 0 m = v0.y v1.y v2.y v3.y = 0 0 1 0 v0.z v1.z v2.z V3.z 0 0 1 1.439
Here my question:
How can I convert my Data-Structure so, that i can write it in the command
obj.SetMg(Matrix)here my aktual code
coord = LINEDATA.split(",") #print coord #print ("Datenzeile enthält " + str(len (coord)) + " Datensätze") MA1 = float(coord[0]) MA2 = float(coord[1]) MA3 = float(coord[2]) MA4 = float(coord[3]) MA5 = float(coord[4]) MA6 = float(coord[5]) MA7 = float(coord[6]) MA8 = float(coord[7]) MA9 = float(coord[8]) MA10 = float(coord[9]) MA11 = float(coord[10]) MA12 = float(coord[11]) MA13 = float(coord[12]) MA14 = float(coord[13]) MA15 = float(coord[14]) MA16 = float(coord[15]) Matrix = [[MA1,MA2,MA3,MA4],[MA5,MA6,MA7,MA8],[MA9,MA10,MA11,MA12],[MA13,MA14,MA15,MA16]] print Matrix #c4d.SetPoint(i,c4d.Vector(x,y,z)) obj = c4d.BaseObject(c4d.Onull) # Create new cube #obj.SetRelPos(c4d.Vector(20)) # Set position of cube obj.SetMg(Matrix) doc.InsertObject(obj) # Insert object in document
Thanks a lot
-
On 04/07/2014 at 03:12, xxxxxxxx wrote:
Why don't you use the given function in that matrix chapter:
You only need to define v0 - offset and v1,v2,v3 - scale and rotation.E.g. SetGlobalScale(obj, c4d.Vector(1.0, 1.0, 1.439))
SetGlobalPosition(obj, pos) # Sets the global position of obj to pos SetGlobalRotation(obj, rot) # Sets the global rotation of obj to rot SetGlobalScale(obj, scale) # Sets the global scale of obj to scale
-
On 04/07/2014 at 05:31, xxxxxxxx wrote:
it sounds so easy
but:
how do I define v_0 (i think this is the offset
how do I define v_1
how do I define v_2
how do I define v_3
how do I define pos
how do I define rot
how do I define scaleI know it is in my linedata
here an example: "1,0,0,0,0,1,0,0,0,0,1,0,0,0,5,1.439"
But i dont know how to convert it.Sorry for sutch stupid questions
Here is my actual code
for line in DATA: LINEDATA = line.strip() #lese den Zeileninhalt ohne rechte Leerzeichen if (LINEDATA.find (SUCHSTRING_DATA) != -1) : l = len(SUCHSTRING_DATA) LINEDATA = LINEDATA[l:] LINEDATA = LINEDATA[:-4] coord = LINEDATA.split(",") print "Begin neuer Datensatz" # Umwandlung in floating for i in range(16) : coord[i] = float(coord[i]) #print ("Coord", i , "= ",coord[i]) #print i continue print (coord) # Definition der Vektoren v_1 = c4d.Vector( coord[5] , coord[9] , coord[13] ) v_2 = c4d.Vector( coord[6] , coord[10] , coord[14] ) v_3 = c4d.Vector( coord[7] , coord[11] , coord[15] ) off = c4d.Vector(0,0,0) print ( v_1 , v_2 , v_3, off) print () print (v_1) print (v_2) print (v_3) print (off) mat = (v_1,v_2,v_3,off) #c4d.SetPoint(i,c4d.Vector(x,y,z)) obj = c4d.BaseObject(c4d.Onull) # Create new nullobject #obj.SetRelPos(c4d.Vector(20)) # Set position of cube obj.SetMg(mat) doc.InsertObject(obj) # Insert object in document
-
On 04/07/2014 at 07:01, xxxxxxxx wrote:
Looks good.
But makemat = (v_1,v_2,v_3,off)
mat = c4d.Matrix(off, v_1, v_2, v_3)
instead.
-
On 04/07/2014 at 07:15, xxxxxxxx wrote:
Jipiayay
small change, big impact.
it works.
Thanks a lot