private void DrawBody(Body body) //takes body as argument
{
// Draw points
foreach (JointType type in body.Joints.Keys)
{
// Draw all the body joints
switch (type)
{
case JointType.Head:
case JointType.FootLeft:
case JointType.FootRight:
DrawJoint(body.Joints[type], 20, Brushes.Yellow, 2, Brushes.White);
break;
case JointType.ShoulderLeft:
case JointType.ShoulderRight:
case JointType.HipLeft:
case JointType.HipRight:
DrawJoint(body.Joints[type], 20, Brushes.YellowGreen, 2, Brushes.White);
break;
case JointType.ElbowLeft:
case JointType.ElbowRight:
case JointType.KneeLeft:
case JointType.KneeRight:
DrawJoint(body.Joints[type], 15, Brushes.LawnGreen, 2, Brushes.White);
break;
case JointType.HandLeft:
DrawHandJoint(body.Joints[type], body.HandLeftState, 20, 2, Brushes.White);
break;
case JointType.HandRight:
DrawHandJoint(body.Joints[type], body.HandRightState, 20, 2, Brushes.White);
break;
default:
DrawJoint(body.Joints[type], 15, Brushes.RoyalBlue, 2, Brushes.White);
break;
}
}
}
private void DrawJoint(Joint joint, double radius, SolidColorBrush fill, double borderWidth, SolidColorBrush border)
{
//If Joint not tracked then return Joint
if (joint.TrackingState != TrackingState.Tracked) return;
// Map the CameraPoint to ColorSpace so they match
ColorSpacePoint colorPoint = kinectSensor.CoordinateMapper.MapCameraPointToColorSpace(joint.Position);
// Create the UI element based on the parameters
Ellipse El = new Ellipse();
El.Fill = fill;
El.Stroke = border;
El.StrokeThickness = borderWidth;
El.Width = 25;
El.Height = 25;
radius = 25;
// Add the Ellipse to the canvas
SkeletonCanvas.Children.Add(El);
// Avoid exceptions based on bad tracking
if (float.IsInfinity(colorPoint.X) || float.IsInfinity(colorPoint.X)) return;
// Allign ellipse on canvas
Canvas.SetLeft(El, colorPoint.X);
Canvas.SetTop(El, colorPoint.Y);
}
现在我被卡住了,从这一点开始,我该如何在画布上画出身体每个关节之间的‘骨头',类似于我如何为关节添加日食?。
如有任何帮助,不胜感激
在drawbody(Body Body)
函数中,需要设置要绘制的“骨头”。例如:
private void DrawBody(Body body)
{
// left forearm
DrawBone(body.Joints[JointType.HandLeft], body.Joints[JointType.ElbowLeft]);
// right forearm
DrawBone(body.Joints[JointType.HandRight], body.Joints[JointType.ElbowRight]);
// ...etc...
}
drawbone(Joint,Joint)
函数如下所示:
private void DrawBone(Joint first, Joint second)
{
Line line = new Line();
line.Stroke = Brushes.LightSteelBlue;
line.X1 = first.Position.X;
line.X2 = second.Position.X;
line.Y1 = first.Position.Y;
line.Y2 = second.Position.Y;
line.StrokeThickness = 2;
myCanvas.Children.Add(line);
}
我在内存中工作,所以语法可能会有点问题。
骨骼动画类 父类BK.Node 手机QQ版本 成员变量 变量 类型 名称 备注 canMixVertexColor boolean 是否启用颜色叠加 timeScale number 播放速率 paused boolean 暂停 accessoryTypes Array 装扮类型数组 手机QQ版本 7.2.5 例子: var rice =new BK.SkeletonAnimation(atlas
骨骼动画是一种常见但类型特殊的动画,我们提供两套系统,针对不同方向的需求,分别优化。 这两套系统的唯一开关就是 SkeletalAnimation 上的 useBakedAnimation 开关, 启用对应预烘焙骨骼动画系统,禁用后对应实时计算骨骼动画系统,运行时也可以无缝切换。 预烘焙骨骼动画系统 这个系统的压倒性目的是性能,部分表现力的牺牲也被认为是可以接受的。 我们针对性地做了很多底层优化,
所谓骨骼动画,以人体为例简单地说,人体的骨骼运动,骨骼运动会带动肌肉和人体皮肤的空间移动和表面变化,下面将会提到的蒙皮概念你可以类比人体的皮肤。 Threejs骨骼动画需要通过骨骼网格模型类SkinnedMesh来实现,一般来说骨骼动画模型都是3D美术创建,然后程序员通过threejs引擎加载解析,为了让大家更深入理解骨骼动画,下面就通过threejs程序编写一个简易的骨骼动画。 相关类 直接使用
骨骼动画类 父类BK.Node 手机QQ版本 成员变量 变量 类型 名称 备注 canMixVertexColor boolean 是否启用颜色叠加 timeScale number 播放速率 paused boolean 暂停 accessoryTypes Array 装扮类型数组 手机QQ版本 7.2.5 例子: var rice =new BK.SkeletonAnimation(atlas
骨骼是Skeleton(骨架)的一部分。骨架是由SkinnedMesh(蒙皮网格)依次来使用的。 骨骼几乎和空白Object3D相同。 代码示例 const root = new THREE.Bone(); const child = new THREE.Bone(); root.add( child ); child.position.y = 5; 构造器 Bone( ) 创建一个新的Bone.
骨骼动画和变形动画是非常常见的动画形式,对于Threejs三维引擎来说自然要支持。一般开发过程中都是加载3D美术绘制好的骨骼动画模型或者变形动画模型,不过为了大家更深入的理解这两种动画模型,课程12.1和12.3节用纯Threejs代码实现相应的动画模型创建,虽然怎增加了学习的难度,但是非常有助于从底层理解这两种动画模型。 这两种动画模型也是在上一章讲到的帧动画基础之上实现,学习本章之前最好先学习
DragonBones 骨骼动画资源是由 DragonBones 编辑器导出的数据格式(支持 DragonBones v5.6.2 及以下)。 导入 DragonBones 骨骼动画资源 DragonBones 骨骼动画资源包括: .json/.dbbin 骨骼数据 .json 图集数据 .png 图集纹理 创建骨骼动画资源 在场景中使用 DragonBones 骨骼动画资源需要两个步骤: 创建节
骨骼动画资源是由 Spine 所导出的数据格式(Creator v2.0.7 及以下支持 Spine v2.5,Creator v2.0.8~v2.1 支持 Spine v3.6,Creator v2.2 支持 Spine v3.7,Creator v2.3 及以上支持 Spine v3.8)。 导入骨骼动画资源 骨骼动画所需资源有: .json/.skel 骨骼数据 .png 图集纹理 .txt