df.to.bvh: This function recalculates direct to hierarchical kinematic...

Description Usage Arguments Value Examples

Description

Procedure implements iterative algebraic procedure with additional initial optimization, that is required to align root body joints. Optimization is done using simplex method. The rotation order in hierarchical model is automatically set to ZYX, even if input.skeleton has different order.

Usage

1
2
df.to.bvh(input.skeleton, df.to.save, plot.me = FALSE, frame.id = -1,
  debug.messages = FALSE)

Arguments

input.skeleton

object of mocap class that defines hierarchical kinematic model.

df.to.save

data frame with column names compatible with input.skeleton. Data that is used for calculation has to be placed in columns with names ending .Dx, .Dy and .Dz.

plot.me

if TRUE plot steps of skeleton aligning of frame with index frame.id. Default value is plot.me = FALSE.

frame.id

if frame.id > 0 and plot.me = TRUE plot steps of skeleton aligning of frame with index frame.id. Default value is frame.id = -1.

debug.messages

print additional messages informing about calculation progress.

Value

object of class mocap.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  data("header.mocap")
  data("heian.yondan")

  input.skeleton <- header.mocap

  df.to.save <- heian.yondan[1:300,]
  first.frame <- df.to.bvh(input.skeleton, df.to.save, plot.me = FALSE, debug.messages = TRUE)
  write.bvh(first.frame, "e:\\bvh in r\\gotowy_kod\\output\\heian.yondan.frames300.bvh")

  plot(first.frame$skeleton$Joints[[1]]$Rxyz[,1], type = "l", col = "black", xlab = "sample", ylab = "angle (degrees)")
  lines(first.frame$skeleton$Joints[[1]]$Rxyz[,2], type = "l", col = "red")
  lines(first.frame$skeleton$Joints[[1]]$Rxyz[,3], type = "l", col = "blue")
  legend("bottomright", legend=c("X axis rotation", "Y axis rotation", "Z axis rotation"), col=c("black", "red", "blue"), lty = 1)
  title("Hips rotation data")

  plot(df.to.save[,2], ylab = "Displacement [cm]", xlab = "Time [10^-2 sec]", pch = 1)
  for (a in 1:ncol(df.to.save))
  {
     df.to.save[,a] <- jitter(df.to.save[,a], factor = 500)
  }
  points(df.to.save[,2],col="red", pch = 2)
  legend("bottomright", legend=c("Original", "Jitter"), col=c("black", "red"), pch = c(1,2))
  title("Example channel of MoCap data")

  first.frame <- df.to.bvh(input.skeleton, df.to.save, plot.me = FALSE, debug.messages = TRUE)

  #plot rotation data
  plot(first.frame$skeleton$Joints[[1]]$Rxyz[,1], type = "l", col = "black", xlab = "sample", ylab = "angle (degrees)")
  lines(first.frame$skeleton$Joints[[1]]$Rxyz[,2], type = "l", col = "red")
  lines(first.frame$skeleton$Joints[[1]]$Rxyz[,3], type = "l", col = "blue")
  legend("bottomright", legend=c("X axis rotation", "Y axis rotation", "Z axis rotation"), col=c("black", "red", "blue"), lty = 1)
  title("Hips rotation data")

  write.bvh(first.frame, "e:\\bvh in r\\gotowy_kod\\output\\jitter.heian.yondan.frames300.bvh")

  df.to.save <- heian.yondan[1000:1001,]
  foo <- df.to.bvh(input.skeleton, df.to.save, plot.me = TRUE, debug.messages = FALSE, frame.id = 1)

browarsoftware/RMoCap documentation built on May 16, 2019, 7:28 a.m.