add-world-vector-to-local-space-node

This commit is contained in:
knowledgenude 2020-12-16 17:24:43 -03:00
parent 882dea8d6c
commit 8c1baa2e9a
3 changed files with 53 additions and 2 deletions

View file

@ -0,0 +1,28 @@
package armory.logicnode;
import iron.math.Vec4;
import iron.object.Object;
using armory.object.TransformExtension;
class WorldVectorToLocalSpaceNode extends LogicNode {
public function new(tree: LogicTree) {
super(tree);
}
override function get(from: Int): Vec4 {
var object: Object = inputs[0].get();
var worldVec: Vec4 = inputs[1].get();
if (object == null || worldVec == null) return null;
var localVec: Vec4 = new Vec4();
localVec.x = worldVec.dot(object.transform.right());
localVec.y = worldVec.dot(object.transform.look());
localVec.z = worldVec.dot(object.transform.up());
return localVec;
}
}

View file

@ -1,8 +1,10 @@
from arm.logicnode.arm_nodes import *
class VectorToObjectOrientationNode(ArmLogicTreeNode):
"""Converts the given world oriented vector to an object oriented vector. The object scale is taken in count.
"""Converts the given world vector to a vector oriented by the given object.
The object scale is taken in count.
@seeNode World Vector To Object Space
@seeNode Get World Orientation
@seeNode Vector From Transform
"""
@ -16,4 +18,4 @@ class VectorToObjectOrientationNode(ArmLogicTreeNode):
self.add_input('ArmNodeSocketObject', 'Object')
self.add_input('NodeSocketVector', 'World')
self.add_output('NodeSocketVector', 'Local')
self.add_output('NodeSocketVector', 'Oriented')

View file

@ -0,0 +1,21 @@
from arm.logicnode.arm_nodes import *
class WorldVectorToLocalSpaceNode(ArmLogicTreeNode):
"""Converts the given world vector to a object space vector.
The object scale is taken in count.
@seeNode Vector To Object Orientation
@seeNode Get World Orientation
@seeNode Vector From Transform
"""
bl_idname = 'LNWorldVectorToLocalSpaceNode'
bl_label = 'World Vector To Local Space'
arm_section = 'location'
arm_version = 1
def init(self, context):
super(WorldVectorToLocalSpaceNode, self).init(context)
self.add_input('ArmNodeSocketObject', 'Object')
self.add_input('NodeSocketVector', 'World')
self.add_output('NodeSocketVector', 'Local')