I have 3 Point Helpers which determines a plane in 3d space and I animated all of them randomly.
How can I keep a Plane object always oriented exactly to the plane determined by the Points?
This is a good place to use a Transform Script controller because we can control both the rotation (orientation) and position of the plane with it.
The following script
Creates a Plane primitive
Creates 3 Point Helpers
Assigns a Transform Script and calculates a Matrix3 value which keeps the plane in the plane defined by the three points and centers it in the middle point between the helpers.
If you would move or animate the points, the Plane should follow.
SCRIPT:
--Create a plane and 3 point helper thePlane = Plane() p1 = point pos:[40,-10,30] p2 = point pos:[20,30,40] p3 = point pos:[-10,-20,30] --Create a Transform Script and assign it to the Plane ctrl = transform_script() thePlane.transform.controller = ctrl --Create three Node variables and assign the Helpers to them ctrl.addNode"p1" p1 ctrl.addNode"p2" p2 ctrl.addNode"p3" p3 --We create a variable to hold the expression --We calculate the vector from Point01 to Point02 txt ="v1 = normalize (p2.pos-p1.pos)\n" --and the vector from Point01 to Point03 txt +="v2 = normalize (p3.pos-p1.pos)\n" --The cross productof the two vectors is the normal to the plane txt +="nv1 = normalize (cross v1 v2)\n" --Thecross product ofthenormal and vector 1gives us a third axis txt +="nv2=normalize(cross nv1 v1)\n" --We create a matrix3 value using he first vector, --and the two cross products which are all orthogonal to each-other. --The translation part .row4 is the middle point --of the 3 points' positions: txt +="matrix3 v1 nv2 nv1 ((p1.pos+p2.pos+p3.pos)/3)" --Assign the expression to the script controller ctrl.setExpression txt