Matrix Verständnis-Problem

blutsvente

Erfahrenes Mitglied
Hi zusammen,

ich hab da heute mal eine Frage zur Matrix in C4D.

Ich möchte in Coffee für erzeugte Klone zusätzlich Null-Objekte erzeugen lassen, die z.B. in x-Richtung 200 verschoben sein sollen. Allerdings unter Berücksichtigung der Rotation und Skalierung.

Also mittels objekt->GetMG die Matrix besorgt. Natürlich auch in der SDK nachgelesen, wie Matrizen in C4D aufgebaut sind. Aber ich komme da einfach nicht weiter.

GetV0 gibt mir die Position zurück. Bei mir -28,557 | 0,0 | 1,25. Soweit so gut.
V1 bis V3 geben mir dann doch die Ausrichtung der Achsen zurück.
Ich frag mich nun nur, wie ich mit den Angaben nun auf die Rotation von 16,913 | 0 | 0 kommen soll.
V1 : 0,978 | 0,0 | 0,275
V2 : 0,0 | 1,003 | 0,0
V3 : -0,344 | 0,0 | 1,133

Kommt mir mittlerweile allerdings so vor, als würde ich da ganz böse ein paar Dinge durcheinander bringen.

Kann mir vielleicht jemand zum Durchblick verhelfen?
Vielen Dank an euch im voraus.

VG,
blutsvente
 
Zuletzt bearbeitet:
Alles klar, hab das erste Rätsel gelöst. :)

Die Vektoren V1 bis V3 stellen die Ausrichtung der X-, Y- und Z-Achse zum Null-Vektor dar. Also dem Szenen-Ursprung. Und das gemessen am Eineitskreis.

0,2975 ist die Gegenkathete lang, 0,9785 die Ankathete. Somit ein Winkel von 16,911 für die X-Achse.
Die beiden anderen Achsen sind aber gar nicht verdreht. Warum zum Kuckuck hab ich also noch Angaben für die Y- und Z-Achse?
 
Hi!

Schau mal in die Coffee SDK nach "Rechnen mit Matritzen". Da sind einige Beispiele, wie man damit "umgehen" kann. In Deinem genannte Beispiel kannst du einen "globalen" Vektor erzeugen mit (200/0/0) und diesen aus Sicht der Klone "lokal" addieren lassen...

Liebe Grüße,
Mark.
 
Also die Erklärung in der Coffee-SDK sind schon mal wirklich hilfreich. Aber der Kopf tut jetzt trotzdem weh... ;)

Aber aus irgendeinem unerfindlichen Grund, wird der letzte Durchgang der Berechnung immer wieder falsch ausgeführt.

Als Grundlage habe ich mir das Skript Generate_nulls_on_Mograph vorgenommen.

Ich möchte nun noch den Radius inklusive möglicher Skalierung mit einrechnen.
Das ganze sieht jetzt aus wie im Anhang gezeigt.

Leider haut mir jetzt immer der letzte Spline komplett ab - also hat eine falsche Position im Raum. Hat da jemand von euch eine Idee?

Das sind die Zeilen, die mir das Leben schwer machen:
Code:
var gP = mat->GetMulP(vector(200,0,0));
mat->SetV0(gP);
	
var targetMat = new (Matrix);
targetMat = nl->GetMg();
targetMat->SetV0(gP);

nl->SetMg(targetMat);

Viele Grüße,
blutsvente
 

Anhänge

Zuletzt bearbeitet:
Zurück