Normalerweise kann ein Punkt im lokalen Raum zu NDC Raum transformiert werden, indem die folgenden mathematischen tun:
Pworld = M * Plocal;
Pview = V * Pworld;
Pndc = P * Pview;
wobei M = Modell, V = Ansicht und P = Projektion.
Also, wenn Sie einen Punkt in dem Weltkoordinatensystem haben und wollen, dass es in lokalem Koordinatensystem zu erhalten, müssen Sie nur die erste Gleichung invertieren:
Plocal = inv(M) * Pworld;
Dies sollte transform.InverseTransformPoint(Vector3)
gleichwertig sein (nur hinzufügen eine vierte Vektor-H = 1) -Koordinate
transform.InverseTransformDirection(Vector3)
zu implementieren, die nicht von Skalen betroffen ist, muß man diese Gleichung verwenden:
Plocal = transpose(inverse(M)) * Pworld
Hier ist M die obere linke 3x3-Matrix von Ihrem ursprünglichen Modell. Um zu verstehen, warum Sie diese Mathematik verwenden sollten, lade ich Sie ein, diese Seite zu betrachten: normal transformation
Verwenden Sie einfach Vektorpositionsobjekte im Wortraum für die Transformation in den lokalen Raum. Warum möchten Sie Matrizen verwenden? –
Hallo V. Borodinov, mein Objekt wurde gedreht und übersetzt, aus diesem Grund muss ich neue Position und Rotation im neuen Koordinatensystem berechnen. –
Müssen nur Basismatrizen ändern –