delete obsolete project 2
This commit is contained in:
parent
29e1c182e8
commit
380b116f1a
8 changed files with 0 additions and 576 deletions
|
@ -1 +0,0 @@
|
||||||
ofxAzureKinect
|
|
|
@ -1,17 +0,0 @@
|
||||||
#version 150
|
|
||||||
|
|
||||||
// Custom attributes.
|
|
||||||
|
|
||||||
in vec4 vColor;
|
|
||||||
|
|
||||||
out vec4 fragColor;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
if (vColor.a == 0)
|
|
||||||
{
|
|
||||||
discard;
|
|
||||||
}
|
|
||||||
|
|
||||||
fragColor = vColor;
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
#version 150
|
|
||||||
|
|
||||||
// OF built-in attributes.
|
|
||||||
|
|
||||||
uniform mat4 modelViewProjectionMatrix;
|
|
||||||
|
|
||||||
// Custom attributes.
|
|
||||||
|
|
||||||
#define BODY_INDEX_MAP_BACKGROUND 255
|
|
||||||
|
|
||||||
const vec4[6] COLORS = vec4[]
|
|
||||||
(
|
|
||||||
vec4(211 / 255.0, 248 / 255.0, 226 / 255.0, 1.0),
|
|
||||||
vec4(228 / 255.0, 193 / 255.0, 249 / 255.0, 1.0),
|
|
||||||
vec4(237 / 255.0, 231 / 255.0, 177 / 255.0, 1.0),
|
|
||||||
vec4(246 / 255.0, 148 / 255.0, 193 / 255.0, 1.0),
|
|
||||||
vec4(169 / 255.0, 222 / 255.0, 249 / 255.0, 1.0),
|
|
||||||
vec4(255 / 255.0, 135 / 255.0, 111 / 255.0, 1.0)
|
|
||||||
);
|
|
||||||
|
|
||||||
uniform sampler2DRect uDepthTex; // Sampler for the depth space data
|
|
||||||
uniform sampler2DRect uBodyIndexTex; // Sampler for the body index data
|
|
||||||
uniform sampler2DRect uWorldTex; // Transformation from kinect depth space to kinect world space
|
|
||||||
|
|
||||||
uniform ivec2 uFrameSize;
|
|
||||||
|
|
||||||
uniform int[6] uBodyIDs;
|
|
||||||
|
|
||||||
out vec4 vColor;
|
|
||||||
|
|
||||||
void main()
|
|
||||||
{
|
|
||||||
vec2 texCoord = vec2(gl_InstanceID % uFrameSize.x, gl_InstanceID / uFrameSize.x);
|
|
||||||
|
|
||||||
float depth = texture(uDepthTex, texCoord).x;
|
|
||||||
int bodyIndex = int(texture(uBodyIndexTex, texCoord).x * 255);
|
|
||||||
vec4 ray = texture(uWorldTex, texCoord);
|
|
||||||
|
|
||||||
if (depth != 0 &&
|
|
||||||
bodyIndex != BODY_INDEX_MAP_BACKGROUND &&
|
|
||||||
ray.x != 0 && ray.y != 0)
|
|
||||||
{
|
|
||||||
int bodyID = uBodyIDs[bodyIndex];
|
|
||||||
vColor = COLORS[bodyID % 6];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vColor = vec4(0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
vec4 posWorld = vec4(1);
|
|
||||||
posWorld.z = depth * 65535.0; // Remap to float range.
|
|
||||||
posWorld.x = ray.x * posWorld.z;
|
|
||||||
posWorld.y = ray.y * posWorld.z;
|
|
||||||
|
|
||||||
gl_Position = modelViewProjectionMatrix * posWorld;
|
|
||||||
}
|
|
|
@ -1,141 +0,0 @@
|
||||||
################################################################################
|
|
||||||
# CONFIGURE PROJECT MAKEFILE (optional)
|
|
||||||
# This file is where we make project specific configurations.
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# OF ROOT
|
|
||||||
# The location of your root openFrameworks installation
|
|
||||||
# (default) OF_ROOT = ../../..
|
|
||||||
################################################################################
|
|
||||||
# OF_ROOT = ../../..
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT ROOT
|
|
||||||
# The location of the project - a starting place for searching for files
|
|
||||||
# (default) PROJECT_ROOT = . (this directory)
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_ROOT = .
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT SPECIFIC CHECKS
|
|
||||||
# This is a project defined section to create internal makefile flags to
|
|
||||||
# conditionally enable or disable the addition of various features within
|
|
||||||
# this makefile. For instance, if you want to make changes based on whether
|
|
||||||
# GTK is installed, one might test that here and create a variable to check.
|
|
||||||
################################################################################
|
|
||||||
# None
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT EXTERNAL SOURCE PATHS
|
|
||||||
# These are fully qualified paths that are not within the PROJECT_ROOT folder.
|
|
||||||
# Like source folders in the PROJECT_ROOT, these paths are subject to
|
|
||||||
# exlclusion via the PROJECT_EXLCUSIONS list.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank)
|
|
||||||
#
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_EXTERNAL_SOURCE_PATHS =
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT EXCLUSIONS
|
|
||||||
# These makefiles assume that all folders in your current project directory
|
|
||||||
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations
|
|
||||||
# to look for source code. The any folders or files that match any of the
|
|
||||||
# items in the PROJECT_EXCLUSIONS list below will be ignored.
|
|
||||||
#
|
|
||||||
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete
|
|
||||||
# string unless teh user adds a wildcard (%) operator to match subdirectories.
|
|
||||||
# GNU make only allows one wildcard for matching. The second wildcard (%) is
|
|
||||||
# treated literally.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_EXCLUSIONS = (blank)
|
|
||||||
#
|
|
||||||
# Will automatically exclude the following:
|
|
||||||
#
|
|
||||||
# $(PROJECT_ROOT)/bin%
|
|
||||||
# $(PROJECT_ROOT)/obj%
|
|
||||||
# $(PROJECT_ROOT)/%.xcodeproj
|
|
||||||
#
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_EXCLUSIONS =
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT LINKER FLAGS
|
|
||||||
# These flags will be sent to the linker when compiling the executable.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs
|
|
||||||
#
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
#
|
|
||||||
# Currently, shared libraries that are needed are copied to the
|
|
||||||
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to
|
|
||||||
# add a runtime path to search for those shared libraries, since they aren't
|
|
||||||
# incorporated directly into the final executable application binary.
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_LDFLAGS=-Wl,-rpath=./libs
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT DEFINES
|
|
||||||
# Create a space-delimited list of DEFINES. The list will be converted into
|
|
||||||
# CFLAGS with the "-D" flag later in the makefile.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_DEFINES = (blank)
|
|
||||||
#
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_DEFINES =
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT CFLAGS
|
|
||||||
# This is a list of fully qualified CFLAGS required when compiling for this
|
|
||||||
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS
|
|
||||||
# defined in your platform specific core configuration files. These flags are
|
|
||||||
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_CFLAGS = (blank)
|
|
||||||
#
|
|
||||||
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in
|
|
||||||
# your platform specific configuration file will be applied by default and
|
|
||||||
# further flags here may not be needed.
|
|
||||||
#
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_CFLAGS =
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT OPTIMIZATION CFLAGS
|
|
||||||
# These are lists of CFLAGS that are target-specific. While any flags could
|
|
||||||
# be conditionally added, they are usually limited to optimization flags.
|
|
||||||
# These flags are added BEFORE the PROJECT_CFLAGS.
|
|
||||||
#
|
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank)
|
|
||||||
#
|
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets.
|
|
||||||
#
|
|
||||||
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank)
|
|
||||||
#
|
|
||||||
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the
|
|
||||||
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration
|
|
||||||
# file will be applied by default and further optimization flags here may not
|
|
||||||
# be needed.
|
|
||||||
#
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE =
|
|
||||||
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG =
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# PROJECT COMPILERS
|
|
||||||
# Custom compilers can be set for CC and CXX
|
|
||||||
# (default) PROJECT_CXX = (blank)
|
|
||||||
# (default) PROJECT_CC = (blank)
|
|
||||||
# Note: Leave a leading space when adding list items with the += operator
|
|
||||||
################################################################################
|
|
||||||
# PROJECT_CXX =
|
|
||||||
# PROJECT_CC =
|
|
|
@ -1,8 +0,0 @@
|
||||||
// Icon Resource Definition
|
|
||||||
#define MAIN_ICON 102
|
|
||||||
|
|
||||||
#if defined(_DEBUG)
|
|
||||||
MAIN_ICON ICON "icon_debug.ico"
|
|
||||||
#else
|
|
||||||
MAIN_ICON ICON "icon.ico"
|
|
||||||
#endif
|
|
|
@ -1,11 +0,0 @@
|
||||||
#include "ofApp.h"
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
ofGLFWWindowSettings settings;
|
|
||||||
settings.setGLVersion(3, 2);
|
|
||||||
settings.setSize(1280, 720);
|
|
||||||
ofCreateWindow(settings);
|
|
||||||
|
|
||||||
ofRunApp(new ofApp());
|
|
||||||
}
|
|
|
@ -1,303 +0,0 @@
|
||||||
#include "ofApp.h"
|
|
||||||
|
|
||||||
class Particle
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
ofVec3f p;
|
|
||||||
int id;
|
|
||||||
Particle()
|
|
||||||
{
|
|
||||||
p = ofVec3f(ofRandom(-100, 100), ofRandom(-100, 100), ofRandom(-100, 100));
|
|
||||||
id = ofRandom(K4ABT_JOINT_COUNT);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
std::vector<Particle> particles;
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::setup()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 10000; i++)
|
|
||||||
{
|
|
||||||
particles.push_back(Particle());
|
|
||||||
}
|
|
||||||
|
|
||||||
//ofSetLogLevel(OF_LOG_VERBOSE);
|
|
||||||
|
|
||||||
ofLogNotice(__FUNCTION__) << "Found " << ofxAzureKinect::Device::getInstalledCount() << " installed devices.";
|
|
||||||
|
|
||||||
auto deviceSettings = ofxAzureKinect::DeviceSettings();
|
|
||||||
deviceSettings.syncImages = false;
|
|
||||||
deviceSettings.depthMode = K4A_DEPTH_MODE_NFOV_UNBINNED;
|
|
||||||
deviceSettings.updateIr = false;
|
|
||||||
deviceSettings.updateColor = false;
|
|
||||||
//deviceSettings.colorResolution = K4A_COLOR_RESOLUTION_1080P;
|
|
||||||
deviceSettings.updateWorld = true;
|
|
||||||
deviceSettings.updateVbo = false;
|
|
||||||
auto bodyTrackingSettings = ofxAzureKinect::BodyTrackingSettings();
|
|
||||||
//bodyTrackingSettings.processingMode = K4ABT_TRACKER_PROCESSING_MODE_CPU;
|
|
||||||
bodyTrackingSettings.updateBodies = true;
|
|
||||||
if (kinectDevice.open())
|
|
||||||
{
|
|
||||||
kinectDevice.startCameras(deviceSettings, bodyTrackingSettings);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load shader.
|
|
||||||
auto shaderSettings = ofShaderSettings();
|
|
||||||
shaderSettings.shaderFiles[GL_VERTEX_SHADER] = "shaders/render.vert";
|
|
||||||
shaderSettings.shaderFiles[GL_FRAGMENT_SHADER] = "shaders/render.frag";
|
|
||||||
shaderSettings.intDefines["BODY_INDEX_MAP_BACKGROUND"] = K4ABT_BODY_INDEX_MAP_BACKGROUND;
|
|
||||||
shaderSettings.bindDefaults = true;
|
|
||||||
if (shader.setup(shaderSettings))
|
|
||||||
{
|
|
||||||
ofLogNotice(__FUNCTION__) << "Success loading shader!";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup vbo.
|
|
||||||
std::vector<glm::vec3> verts(1);
|
|
||||||
pointsVbo.setVertexData(verts.data(), verts.size(), GL_STATIC_DRAW);
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::exit()
|
|
||||||
{
|
|
||||||
kinectDevice.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::update()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::draw()
|
|
||||||
{
|
|
||||||
ofBackground(0);
|
|
||||||
|
|
||||||
if (kinectDevice.isStreaming())
|
|
||||||
{
|
|
||||||
kinectDevice.getBodyIndexTex().draw(0, 0, 360, 360);
|
|
||||||
}
|
|
||||||
|
|
||||||
camera.begin();
|
|
||||||
{
|
|
||||||
ofPushMatrix();
|
|
||||||
{
|
|
||||||
ofRotateXDeg(180);
|
|
||||||
|
|
||||||
ofEnableDepthTest();
|
|
||||||
|
|
||||||
constexpr int kMaxBodies = 6;
|
|
||||||
int bodyIDs[kMaxBodies];
|
|
||||||
int i = 0;
|
|
||||||
while (i < kinectDevice.getNumBodies())
|
|
||||||
{
|
|
||||||
bodyIDs[i] = kinectDevice.getBodyIDs()[i];
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
while (i < kMaxBodies)
|
|
||||||
{
|
|
||||||
bodyIDs[i] = 0;
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
shader.begin();
|
|
||||||
{
|
|
||||||
shader.setUniformTexture("uDepthTex", kinectDevice.getDepthTex(), 1);
|
|
||||||
shader.setUniformTexture("uBodyIndexTex", kinectDevice.getBodyIndexTex(), 2);
|
|
||||||
shader.setUniformTexture("uWorldTex", kinectDevice.getDepthToWorldTex(), 3);
|
|
||||||
shader.setUniform2i("uFrameSize", kinectDevice.getDepthTex().getWidth(), kinectDevice.getDepthTex().getHeight());
|
|
||||||
shader.setUniform1iv("uBodyIDs", bodyIDs, kMaxBodies);
|
|
||||||
|
|
||||||
int numPoints = kinectDevice.getDepthTex().getWidth() * kinectDevice.getDepthTex().getHeight();
|
|
||||||
pointsVbo.drawInstanced(GL_POINTS, 0, 1, numPoints);
|
|
||||||
}
|
|
||||||
shader.end();
|
|
||||||
|
|
||||||
ofDisableDepthTest();
|
|
||||||
|
|
||||||
auto &bodySkeletons = kinectDevice.getBodySkeletons();
|
|
||||||
for (auto &skeleton : bodySkeletons)
|
|
||||||
{
|
|
||||||
// Draw joints.
|
|
||||||
for (int i = 0; i < K4ABT_JOINT_COUNT; ++i)
|
|
||||||
{
|
|
||||||
auto joint = skeleton.joints[i];
|
|
||||||
ofPushMatrix();
|
|
||||||
{
|
|
||||||
glm::mat4 transform = glm::translate(toGlm(joint.position)) * glm::toMat4(toGlm(joint.orientation));
|
|
||||||
ofMultMatrix(transform);
|
|
||||||
|
|
||||||
ofDrawAxis(50.0f);
|
|
||||||
}
|
|
||||||
ofPopMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Draw connections.
|
|
||||||
skeletonMesh.setMode(OF_PRIMITIVE_LINES);
|
|
||||||
auto &vertices = skeletonMesh.getVertices();
|
|
||||||
vertices.resize(50);
|
|
||||||
int vdx = 0;
|
|
||||||
|
|
||||||
// Spine.
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_PELVIS].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SPINE_NAVEL].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SPINE_NAVEL].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SPINE_CHEST].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SPINE_CHEST].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NECK].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NECK].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_HEAD].position);
|
|
||||||
|
|
||||||
// Head.
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_HEAD].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NOSE].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NOSE].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_EYE_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_EYE_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_EAR_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NOSE].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_EYE_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_EYE_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_EAR_RIGHT].position);
|
|
||||||
|
|
||||||
// Left Leg.
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_PELVIS].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_HIP_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_HIP_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_KNEE_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_KNEE_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ANKLE_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ANKLE_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_FOOT_LEFT].position);
|
|
||||||
|
|
||||||
// Right leg.
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_PELVIS].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_HIP_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_HIP_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_KNEE_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_KNEE_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ANKLE_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ANKLE_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_FOOT_RIGHT].position);
|
|
||||||
|
|
||||||
// Left arm.
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NECK].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_CLAVICLE_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_CLAVICLE_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SHOULDER_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SHOULDER_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ELBOW_LEFT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ELBOW_LEFT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_WRIST_LEFT].position);
|
|
||||||
|
|
||||||
// Right arm.
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_NECK].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_CLAVICLE_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_CLAVICLE_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SHOULDER_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_SHOULDER_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ELBOW_RIGHT].position);
|
|
||||||
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_ELBOW_RIGHT].position);
|
|
||||||
vertices[vdx++] = toGlm(skeleton.joints[K4ABT_JOINT_WRIST_RIGHT].position);
|
|
||||||
|
|
||||||
skeletonMesh.draw();
|
|
||||||
|
|
||||||
for (int i = 0; i < particles.size(); i++)
|
|
||||||
{
|
|
||||||
auto& pt = particles.at(i);
|
|
||||||
pt.p.interpolate(vertices[pt.id], 0.01);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < particles.size(); i++)
|
|
||||||
{
|
|
||||||
ofDrawCircle(particles.at(i).p, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ofPopMatrix();
|
|
||||||
}
|
|
||||||
camera.end();
|
|
||||||
|
|
||||||
std::ostringstream oss;
|
|
||||||
oss << ofToString(ofGetFrameRate(), 2) + " FPS" << std::endl;
|
|
||||||
oss << "Joint Smoothing: " << kinectDevice.jointSmoothing;
|
|
||||||
ofDrawBitmapStringHighlight(oss.str(), 10, 20);
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::keyPressed(int key)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::keyReleased(int key)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::mouseMoved(int x, int y)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::mouseDragged(int x, int y, int button)
|
|
||||||
{
|
|
||||||
if (button == 1)
|
|
||||||
{
|
|
||||||
kinectDevice.jointSmoothing = ofMap(x, 0, ofGetWidth(), 0.0f, 1.0f, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::mousePressed(int x, int y, int button)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::mouseReleased(int x, int y, int button)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::mouseEntered(int x, int y)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::mouseExited(int x, int y)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::windowResized(int w, int h)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::gotMessage(ofMessage msg)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------
|
|
||||||
void ofApp::dragEvent(ofDragInfo dragInfo)
|
|
||||||
{
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "ofMain.h"
|
|
||||||
|
|
||||||
#include "ofxAzureKinect.h"
|
|
||||||
|
|
||||||
class ofApp
|
|
||||||
: public ofBaseApp
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
void setup();
|
|
||||||
void exit();
|
|
||||||
|
|
||||||
void update();
|
|
||||||
void draw();
|
|
||||||
|
|
||||||
void keyPressed(int key);
|
|
||||||
void keyReleased(int key);
|
|
||||||
void mouseMoved(int x, int y);
|
|
||||||
void mouseDragged(int x, int y, int button);
|
|
||||||
void mousePressed(int x, int y, int button);
|
|
||||||
void mouseReleased(int x, int y, int button);
|
|
||||||
void mouseEntered(int x, int y);
|
|
||||||
void mouseExited(int x, int y);
|
|
||||||
void windowResized(int w, int h);
|
|
||||||
void dragEvent(ofDragInfo dragInfo);
|
|
||||||
void gotMessage(ofMessage msg);
|
|
||||||
|
|
||||||
private:
|
|
||||||
ofxAzureKinect::Device kinectDevice;
|
|
||||||
|
|
||||||
ofEasyCam camera;
|
|
||||||
|
|
||||||
ofVbo pointsVbo;
|
|
||||||
ofShader shader;
|
|
||||||
|
|
||||||
ofVboMesh skeletonMesh;
|
|
||||||
};
|
|
Loading…
Reference in a new issue