Merge faster math and skinning

This commit is contained in:
luboslenco 2018-08-28 13:50:52 +02:00
parent 6a23b5e2ff
commit 68ec902090
14 changed files with 52 additions and 43 deletions

View file

@ -31,9 +31,9 @@ class BoneFKNode extends LogicNode {
function moveBone() {
m.setFrom(w);
m.multmat2(transform);
m.multmat(transform);
iw.getInverse(w);
m.multmat2(iw);
m.multmat(iw);
// anim.removeUpdate(moveBone);
// notified = false;

View file

@ -21,7 +21,7 @@ class MatrixMathNode extends LogicNode {
m.setFrom(m1);
switch (property0) {
case "Multiply":
m.multmat2(m2);
m.multmat(m2);
}
return m;

View file

@ -1,5 +1,6 @@
package armory.logicnode;
import iron.math.Quat;
import iron.math.Mat4;
class VectorFromTransformNode extends LogicNode {
@ -23,7 +24,8 @@ class VectorFromTransformNode extends LogicNode {
case "Look":
return m.look();
case "Quaternion":
return m.getQuat();
var q = new Quat();
return q.fromMat(m);
}
return null;

View file

@ -346,7 +346,7 @@ class Inc {
kha.compute.Compute.setFloat2(voxel_cf, vx, vy);
// LVP
m.setFrom(l.VP);
m.multmat2(iron.object.Uniforms.biasMat);
m.multmat(iron.object.Uniforms.biasMat);
kha.compute.Compute.setMatrix(voxel_cg, m.self);
// shadowsBias
kha.compute.Compute.setFloat(voxel_ch, l.data.raw.shadows_bias);

View file

@ -95,7 +95,7 @@ class RenderPathPathtracer {
var ct = cam.transform;
var helpMat = iron.math.Mat4.identity();
helpMat.setFrom(cam.V);
helpMat.multmat2(cam.P);
helpMat.multmat(cam.P);
helpMat.getInverse(helpMat);
constantBuffer.setFloat(0, ct.worldx());
constantBuffer.setFloat(4, ct.worldy());

View file

@ -44,8 +44,7 @@ class FollowCamera extends iron.Trait {
if (!disabled) {
if (targetObj != null) {
if (lerp) {
var vec = Vec4.lerp(targetObj.transform.world.getLoc(), object.transform.world.getLoc(), lerpSpeed);
object.transform.loc = vec;
object.transform.loc.lerp(object.transform.world.getLoc(), targetObj.transform.world.getLoc(), lerpSpeed);
}
else {
object.transform.loc = targetObj.transform.world.getLoc();

View file

@ -25,7 +25,7 @@ class SimpleMoveObject extends iron.Trait {
});
notifyOnUpdate(function() {
var move = Vec4.zero();
var move = new Vec4(0, 0, 0);
if (keyboard.down("d")) {
move.x += speed;
@ -51,7 +51,7 @@ class SimpleMoveObject extends iron.Trait {
move.z -= speed;
}
if (!move.equals(Vec4.zero())) {
if (!move.equals(new Vec4(0, 0, 0))) {
moveObject(move);
}
});

View file

@ -25,7 +25,7 @@ class SimpleRotateObject extends iron.Trait {
});
notifyOnUpdate(function() {
var rotate = Vec4.zero();
var rotate = new Vec4(0, 0, 0);
if (keyboard.down("r")) {
rotate.x += 1;
@ -51,7 +51,7 @@ class SimpleRotateObject extends iron.Trait {
rotate.z -= 1;
}
if (!rotate.equals(Vec4.zero())) {
if (!rotate.equals(new Vec4(0, 0, 0))) {
rotateObject(rotate);
}
});

View file

@ -30,7 +30,7 @@ class SimpleScaleObject extends iron.Trait {
});
notifyOnUpdate(function() {
var scale = Vec4.zero();
var scale = new Vec4(0, 0, 0);
if (keyboard.down("y")) {
scale.x += speed;
@ -64,7 +64,7 @@ class SimpleScaleObject extends iron.Trait {
scale.set(-speed, -speed, -speed);
}
if (!scale.equals(Vec4.zero())) {
if (!scale.equals(new Vec4(0, 0, 0))) {
scaleObject(scale);
}
});

View file

@ -42,7 +42,7 @@ class DebugConsole extends Trait {
var graph:kha.Image = null;
var graphA:kha.Image = null;
var graphB:kha.Image = null;
var benchmark = false;
var benchmark = true;
var benchFrames = 0;
var benchTime = 0.0;

View file

@ -197,7 +197,7 @@ class DebugDraw {
g.setPipeline(pipeline);
var camera = iron.Scene.active.camera;
vp.setFrom(camera.V);
vp.multmat2(camera.P);
vp.multmat(camera.P);
g.setMatrix(vpID, vp.self);
g.drawIndexedVertices(0, lines * 6);
}

View file

@ -5,6 +5,7 @@ package armory.trait.physics.bullet;
import haxebullet.Bullet;
import iron.Trait;
import iron.math.Vec4;
import iron.math.Quat;
import iron.object.Transform;
import iron.object.MeshObject;
@ -39,9 +40,10 @@ class KinematicCharacterController extends Trait {
public var onReady:Void->Void = null;
static var nullvec = true;
static var vec1:BtVector3 ;
static var quat1:BtQuaternion ;
static var trans1:BtTransform ;
static var vec1:BtVector3;
static var quat1:BtQuaternion;
static var trans1:BtTransform;
static var quat = new Quat();
public function new(mass = 1.0, shape = ControllerShape.Capsule, jumpSpeed = 8.0, friction = 0.5, restitution = 0.0,
collisionMargin = 0.0, animated = false, group = 1) {
@ -128,11 +130,12 @@ class KinematicCharacterController extends Trait {
vec1.setY(transform.worldy());
vec1.setZ(transform.worldz());
trans1.setOrigin(vec1);
var rot = transform.world.getQuat();
quat1.setX(rot.x);
quat1.setY(rot.y);
quat1.setZ(rot.z);
quat1.setW(rot.w);
quat.fromMat(transform.world);
quat1.setX(quat.x);
quat1.setY(quat.y);
quat1.setZ(quat.z);
quat1.setW(quat.w);
trans1.setRotation(quat1);
body = BtPairCachingGhostObject.create();
@ -303,11 +306,11 @@ class KinematicCharacterController extends Trait {
vec1.setY(t.worldy());
vec1.setZ(t.worldz());
trans1.setOrigin(vec1);
var rot = t.world.getQuat();
quat1.setX(rot.x);
quat1.setY(rot.y);
quat1.setZ(rot.z);
quat1.setW(rot.w);
quat.fromMat(t.world);
quat1.setX(quat.x);
quat1.setY(quat.y);
quat1.setZ(quat.z);
quat1.setW(quat.w);
trans1.setRotation(quat1);
//body.setCenterOfMassTransform(trans); // ?
if (currentScaleX != t.scale.x || currentScaleY != t.scale.y || currentScaleZ != t.scale.z) setScale(t.scale);

View file

@ -4,6 +4,7 @@ package armory.trait.physics.bullet;
import iron.math.Vec4;
import iron.math.Mat4;
import iron.math.Quat;
import iron.Trait;
import iron.object.Object;
import iron.object.MeshObject;
@ -31,6 +32,7 @@ class PhysicsHook extends Trait {
static var quat1:BtQuaternion;
static var trans1:BtTransform;
static var trans2:BtTransform;
static var quat = new Quat();
public function new(targetName:String, verts:Array<Float>) {
super();
@ -159,10 +161,11 @@ class PhysicsHook extends Trait {
vec1.setY(targetTransform.world.getLoc().y);
vec1.setZ(targetTransform.world.getLoc().z);
trans1.setOrigin(vec1);
quat1.setX(targetTransform.world.getQuat().x);
quat1.setY(targetTransform.world.getQuat().y);
quat1.setZ(targetTransform.world.getQuat().z);
quat1.setW(targetTransform.world.getQuat().w);
quat.fromMat(targetTransform.world);
quat1.setX(quat.x);
quat1.setY(quat.y);
quat1.setZ(quat.z);
quat1.setW(quat.w);
trans1.setRotation(quat1);
hookRB.setWorldTransform(trans1);
}

View file

@ -4,6 +4,7 @@ package armory.trait.physics.bullet;
import haxebullet.Bullet;
import iron.math.Vec4;
import iron.math.Quat;
import iron.object.Transform;
import iron.object.MeshObject;
@ -54,6 +55,7 @@ class RigidBody extends iron.Trait {
static var quat1:BtQuaternion;
static var trans1:BtTransform;
static var trans2:BtTransform;
static var quat = new Quat();
public function new(mass = 1.0, shape = Shape.Box, friction = 0.5, restitution = 0.0, collisionMargin = 0.0,
linearDamping = 0.04, angularDamping = 0.1, animated = false,
@ -169,11 +171,11 @@ class RigidBody extends iron.Trait {
vec1.setY(transform.worldy());
vec1.setZ(transform.worldz());
trans1.setOrigin(vec1);
var rot = transform.world.getQuat();
quat1.setX(rot.x);
quat1.setY(rot.y);
quat1.setZ(rot.z);
quat1.setW(rot.w);
quat.fromMat(transform.world);
quat1.setX(quat.x);
quat1.setY(quat.y);
quat1.setZ(quat.z);
quat1.setW(quat.w);
trans1.setRotation(quat1);
var centerOfMassOffset = trans2;
@ -388,11 +390,11 @@ class RigidBody extends iron.Trait {
vec1.setY(t.worldy());
vec1.setZ(t.worldz());
trans1.setOrigin(vec1);
var rot = t.world.getQuat();
quat1.setX(rot.x);
quat1.setY(rot.y);
quat1.setZ(rot.z);
quat1.setW(rot.w);
quat.fromMat(t.world);
quat1.setX(quat.x);
quat1.setY(quat.y);
quat1.setZ(quat.z);
quat1.setW(quat.w);
trans1.setRotation(quat1);
body.setCenterOfMassTransform(trans1);
if (currentScaleX != t.scale.x || currentScaleY != t.scale.y || currentScaleZ != t.scale.z) setScale(t.scale);