package org.squidy.nodes.optitrack.cameraInterface; import org.squidy.manager.data.DataConstant; import org.squidy.manager.data.impl.DataPosition3D; import org.squidy.manager.data.impl.DataPosition6D; import org.squidy.manager.model.AbstractNode; import org.squidy.nodes.MouseIO; import org.squidy.nodes.optitrack.Optitrack; import org.squidy.nodes.optitrack.TTStreaming; import org.squidy.nodes.optitrack.utils.TrackingConstant; import org.squidy.nodes.optitrack.utils.TrackingUtility; public class NatNetDotNet extends AbstractNode { static{ System.loadLibrary("/ext/speechrecognition/oojnidotnet"); System.loadLibrary("/ext/optitrack/NatNetStreaming"); } private static TTStreaming ttStreaming; private static double maxX, maxY, maxZ; native int create(int p1, int p2, int p3, int p4, int port, int s1, int s2, int s3, int s4); public NatNetDotNet(TTStreaming tts) { this.ttStreaming = tts; String host = "192.168.178.100"; String parts[] = host.split("."); int port = 1234; // new Thread() { // public void run() { create(192,168,178,101,port,192,168,178,100); // }; // }.start(); // // System.out.println("im here"); } public static void JPrintLine(String in) { if (in.equalsIgnoreCase("stop")) { System.err.println("STOPPPPPP"); } System.out.println(in); } public static void JRigidBodyMarker(int id, int frameID, float x, float y, float z) { } public static void JSingleMarker(int frameID, float x, float y, float z) { DataPosition3D d3d = new DataPosition3D(Optitrack.class, x/6000.0, y/3000.0, z/6000.0); d3d.setAttribute(DataConstant.GROUP_ID, frameID); d3d.setAttribute(TrackingConstant.NATNET, true); d3d.setAttribute(DataConstant.MAX_X, 6000.0); d3d.setAttribute(DataConstant.MAX_Y, 3000.0); d3d.setAttribute(DataConstant.MAX_Z, 6000.0); d3d.setAttribute(DataConstant.CenterOffset_X, 0.0); d3d.setAttribute(DataConstant.CenterOffset_Y, 0.0); d3d.setAttribute(DataConstant.CenterOffset_Z, 0.0); ttStreaming.publish(d3d); } private static long lastFrame = 0; private static float currentFrame; public static void JRigidBody(int id, int frameID, float x, float y, float z, float qx, float qy, float qz, float qw, float yaw, float pitch, float roll) { double[][] m6d = new double[3][3]; m6d[0][0] = 2*(qx*qx + qw*qw)-1; m6d[0][1] = 2*(qx*qy - qz*qw); m6d[0][2] = 2*(qx*qz + qy*qw); m6d[1][0] = 2*(qx*qy + qz*qw); m6d[1][1] = 2*(qy*qy + qw*qw)-1; m6d[1][2] = 2*(qy*qz - qx*qw); m6d[2][0] = 2*(qx*qz - qy*qw); m6d[2][1] = 2*(qy*qz + qx*qw); m6d[2][2] = 2*(qz*qz + qw*qw)-1; DataPosition6D d6d = new DataPosition6D(Optitrack.class,x/6000.0,y/3000.0,z/6000.0, m6d[0][0], m6d[0][1], m6d[0][2], m6d[1][0], m6d[1][1], m6d[1][2], m6d[2][0], m6d[2][1], m6d[2][2], yaw, pitch,roll,frameID); d6d.setAttribute(DataConstant.IDENTIFIER,"" + id); d6d.setAttribute(DataConstant.GROUP_ID, frameID); if (frameID != currentFrame) { System.out.println(System.currentTimeMillis() - lastFrame + " " + frameID); lastFrame = System.currentTimeMillis(); } currentFrame = frameID; d6d.setAttribute(DataConstant.GROUP_DESCRIPTION, "RIGIDBODY"); d6d.setAttribute(TrackingConstant.NATNET, true); d6d.setAttribute(DataConstant.MAX_X, 6000.0); d6d.setAttribute(DataConstant.MAX_Y, 3000.0); d6d.setAttribute(DataConstant.MAX_Z, 6000.0); d6d.setAttribute(DataConstant.CenterOffset_X, 0.0); d6d.setAttribute(DataConstant.CenterOffset_Y, 0.0); d6d.setAttribute(DataConstant.CenterOffset_Z, 0.0); ttStreaming.publish(d6d); } }