電子書籍の厳選無料作品が豊富!

CSVのデータから3Dモーションを作成する方法を教えてください。

私は現在、剣道の足さばきについて、モーションデータを作成することで分析する研究を行っていま
す。その中で、演者の動作から身体の各関節のうち、胴体、左右の腰、膝、足の計7つの関節について、3次元座標を抽出し、それをCSV形式のファイルに書き出しました。
そのCSV内のデータを用い、各関節を線(ボーン)でつなぎ、足の動きのみが分かるアニメーションを作りたいと考えております。また、今回は2人分のモーションを重ねて表示することも行いたいです。

いろいろ調べたのですが、やり方が分かりません。やり方の一つとして、CSVを適切なファイルに変換し、アニメーションを作成するソフトに流し込むことが考えられますが、変換するファイルやソフト
は何がふさわしいのか、どのように作業するのかが分かりません。
また、自分でプログラミングする方法も考えられますが、何の言語を用い、どのようなソースコード
を書けば実現するのか皆目見当がつきません。
私は3DCGの分野やプログラミングに関しては全くの初心者なのですが、急きょ必要になり、困っている次第です。4,5日ほどで結果を出さなければいけないので、あまり時間がありません。どのような方法がよいか、上述のような内容で詳しく教えていただきたいです。

CSVファイルの内容を添付しました。列に各関節と3次元座標、行は時系列を表しています。数値は公表できないので消してあります。

よろしくお願いいたします。

「CSVのデータから3Dモーションを作成」の質問画像

A 回答 (2件)

gnuplotというグラフを描画するソフトがあります。


3次元の点を線で結んで3Dアニメーションを作ることもできます。

Linux環境で端末エミュレータを起動します。
gnuplotの前に、awkでCSVファイルをグラフ化できる書式に変換します。
(gnuplotやawkはWindows版もあるが、同じようにできるかどうかは不明)


1. CSVファイルがあるディレクトリで、コマンドプロンプトから下記を一行で実行。
 「点数」はCSV一行あたりの関節(xyzで一組)の数に置き換え。
 motion1.csvは一人目のCSVファイル、motion1.txtはそれを変換した後のファイル名。
 二人目についても同様にmotion2.csvからmotion2.txtを作ること。

$ awk -F, '{ n=2; for (i=0; i<点数; i++) { x=i*3+1; y=i*3+2; z=i*3+2; printf "%g %g %g\n",$x,$y,$z } printf "\n\n" }' motion1.csv > motion1.txt


2. 同じディレクトリに、次のテキストファイルを作成。
 ここではファイル名をplot.txtとします。
 「行数」はCSVフィアルの行数(=時系列のデータ数)に置き換え。
 xrange,yrange,zrangeの範囲の数値は実際のデータに合わせて調整すること。
---------- ここから ----------
m=行数
if (i == 0) set size square
if (i == 0) set xrange[-600:600]
if (i == 0) set yrange[-600:600]
if (i == 0) set zrange[-600:600]
print i
set style line 1 linetype 0
splot "motion1.txt" index i title "motion1" ps 2 with linespoints
replot "motion2.txt" index i title "motion2" ps 2 with linespoints
i=i+1
pause 0.1
if (i<m) reread
---------- ここまで ----------


3. 同じディレクトリで gnuplot を起動し、gnuplotのプロンプトから下記のようにコマンドを実行する。

$ gnuplot

gnuplot> i=0
gnuplot> load "plot.txt"


これで二人分のデータが3Dアニメーションで表示されます。
一人分のデータは一筆書きになるので、同じ関節を往復するなど関節の順番を工夫が必要です。

4,5日しかないとなると、プログラミングの勉強から始めるのは厳しいかと。

・参考
http://gnuplotdojo.blog92.fc2.com/blog-entry-13. …
http://folk.uio.no/hpl/scripting/doc/gnuplot/Kaw …
    • good
    • 0
この回答へのお礼

ありがとうございます。さっそく試してみます。

お礼日時:2014/02/09 11:22

私もあまり詳しくないので参考になればいいのですが....



BVH形式はどうでしょう?中身はテキスト形式なので出力できる言語は沢山あると思います

http://acerola3d.sourceforge.jp/docs/format/tuto …

http://www.tmps.org/index.php?MOCAP%A5%C7%A1%BC% …
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/02/09 11:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!