2011年4月24日日曜日

Maintenance : Blender Scripts


Auto Face Rig
Bug Fix : Syntax Error

Blend Pose
Not work in Blender2.57a,because driver namespace can not be written.

VSQ Importer[New]
Test not enough.

Not use NLA,but shapekey or "blend pose".
The way to select track is by playmode or track numbers.

Create empty Shapekey : OK
Create empty Pose library : OK
Original UTAU data as single track : OK
CV03 DEMO data:
Import playmode=1(Vocal) data : OK
Import playmode=-1(Hamo) data : OK
Import track #1(Japanese vocal) : OK
Import track #3(Breath) : OK
Import track #5(Hamo2) : OK
Adjust to blend curve : Yet

My Scripts

2011年4月11日月曜日

VSQ Importerのお話

前回BlenderのAutoFacialRig Add-onにおまけとしてVSQ Importerを付けたが、本体側を修正しようとしている一方で、この機能の維持に消極的だ。

喋らせるためにVSQデータを作るぐらいなら、2.49bのAudioWindowのようにSin波を表示してそれに合わせてキーを打つ方が手っ取り早く自由度も高いからである。
更に言えば、140US$程度でbvhの吐けるフェイスキャプチャーソフトが存在する以上、台詞作りのためにわざわざDTMソフトを使う意味が見当たらず、結局のところ、ボカロユーザー向け以上のものにはならず、ボカロユーザーから特に反響もない以上、続けても仕方ない(まぁ、アピールもしてないけど)と言う判断。

まぁ、英語でVOCALOIDに関して質問されたりして面倒くさくなったのと、日本語版と英語版しか無い筈なのに非英語圏の人がわざわざ台詞を喋らせるために使えないかと考えているのを知って、音源の商用利用は別途ライセンスが必要だし、かえって無駄な労力を強いりそうだし、それで問い合わせとかされても知らんわ、ってのもある。

VSQの問題点

(1)ランセンス
(I)音声データ
音声データの商用利用には別途使用許諾が必要になるが、まぁ、これは何を使ってもだいたいそうなので、商用利用にはハードルが高いですよ、と言う程度の問題。

(II)データフォーマット
音声データの取扱いについては利用規約に定められているが、データその物については何の規程も書かれていない。
実は、ヤマハのHPには問い合わせはディストリビューターへ、とあるのでクリプトンの問い合わせフォームでこのことを質問したが、回答は無いのでデータフォーマット自体の権利範囲が定められているのかと言うことは今もグレー。
日本ではクリプトンが二次創作のお目溢しをメディアのインタビューで語っているので非商用に関しては問題にならないと思われるし、自分自身がほぼ使っていないのでこれ以上追求する気も無いが、BlenderNationでライセンスに触れている人がいたのでちょっと気になって問い合わせてみた。

(2)Blender-shapekeyでマルチトラックデータを扱う問題
AutoFacialRig Add-onはカスタムプロパティでShapekeyをドライブしてカスタムプロパティにキーを打っていたので、UIのかなりをカスタムプロパティが占有すると言う問題がある代わりに、キーそのものについては問題にならなかったが、Shapekeyは少なくとも現時点ではトラック毎に読み込んで後で合成することが出来ない。
と言うのは、Shapekeyはその時点でリンクしているAction以外は利用不可になってしまい、データ構造上は配下にNLAも持っているがActionStripに切り替えた時点でリンクが切れて利用不可になるので、プログラム的に読み込み時に配下のActionにキーを打ってNLA-ActionStripに切り替えても、別のActionを作ってNLAで足しても結果は同じになる。
そのため、1トラックにまとめて読み込む必要があるが、デモデータでもボーカルを複数トラックに分けているケースもあり、主音声とコーラストラック等の主音声以外をどう振り分けるかと言う判断が必要になる。
ネット上にある推定仕様を気にせずデモデータから判断するに、PlayModeでボーカルとハーモニーを分けているように思われるが、じゃぁ、ハーモニーを取り込むことは無いのか?と言う問題もあり、リップシンク用に作られたデータで無い限り、どこかで人が判断する必要がある。
NLAでデータを見た上で合成すると言うのはその答えの一つだが、読み込みデータ自体を最初から制限する方がユーザーがデータ構造を理解する必要があるがBlenderでの取扱いとしてはシンプルになる。

(3)UTAU
AutoFacialRig Add-onではfpsの10%・・・本来の開始位置の0.1秒前から口を開き始め、アクセントを頂点とし、開始位置ではなくアクセントからディケイ分維持して、長さの0.1秒後ろで終了する様になっている。
要するに発声より口の開閉を一回り大きくしている。
UTAUはVSQに殆どのパラメータを吐かないのでそうした調律が出来ず、MIDIには吐くがMIDIの歌詞データは音声記号の方ではなく表記用(つまり、仮名)の方なので、別途対応表を用意しないと母音だけを拾うことは出来ない。

2011年4月7日木曜日

Blender Add-on : Auto Face Rig (1)


単機能&ポジショニング+デフォーマー作成の2ステップ方式で作り直し。

データ部と処理部を分けると微調整が面倒なので、ベタ打ちしていてコードは長め。
Rollの計算方法がよく解らないのでヤマ勘で結果オーライな感じで、角度によっては破綻するかも知らん。

位置決めが前回のような決め打ちではないので長顎にも出来るけど、基本人間の顔をベースにしているので、顎と耳が離れることは想定していない。
そもそも耳Boneは位置合わせだけでDeformが入っていないので、これを顎の付け根+幅決定用とすれば割と何でもいけるが、顎が前後に薄くて目より狭いスザンヌは無理だった・・・。

2011年3月29日火曜日

Python VSQ Reader Sample


LipSync用に作ったVSQ Readerに入力結果のprintを追加したもの、最下部で入力ファイルを打ち込む必要あり。
ピッチレコード以外、イベントまでは全て読み込み。
但し、**1、**2と言ったキーは**[]のコレクションに格納しているので、元データとのキー名の整合性の保証は無し。
S-JIS変換しておらず単にprintしているだけなので、日本語は文字化けする。

これ以上進めるつもりも無いので、煮るなり焼くなりどうぞ。

2011年3月27日日曜日

Blender Add-on : BlendPose (3)

Interim Publishing

Rest Problems
(1)Key bones can not be constraints' target as locat target space.
(2)I wonder that I used an irreguler way.
(3)I don't understand GameEngine,and have not tested yet.
(4)Hinge : I had forgotten...

2011年3月24日木曜日

Blender Add-on : BlendPose (2)

Problems

Animation

One frame delay


Now,it catch the frame change event by region callback on INFO-Header,3D View-Window,and its Property Panel(UI).
Those can do by only POST_PIXEL,so it can do after starting to draw the frame view.
Property panel is for operation.
3D View is for instance animation.
INFO is for render,so it catch by rendering progresbar drawing.


Using Modal Handler
・Simple Animation ○(Timer Event)
・GL Animation ×
・Render ×
・GameEngine ?

→ It add or override armature object driver when a user operate UI.

Constraint

The target is this pose bone and its target space LOCAL : ×

It is like as the constraints on last place.
Those can select other bones to its constraints' target,but in the opposite case,it may not work.

Specifically,CopyLocation,CopyRotation,CopyScale,Transform,etc...those are to change transform properties.
StretchTo,TrackTo,IK,etc...are right.

Yet


(1)Apply visual pose to bone transform properties.
It is to make new pose to pose library or to make the action strip with bone transform keys,not volume keys.


(2)Check to blend with NLA Editor.

(3)Game Engine

(4)Rotation Axis Angle

(5)Hinge
Inherit RotationExcluded
Inherit ScaleExcluded
Local Location

2011年3月22日火曜日

Blender Add-on : BlendPose (1)

The python sctipt as to blend pose of Armature like as Shapekey.

(1)For any Armature

Not only for facial rig like as AutoFacialRig Add-on.

(2)Keys from Pose Library

Pick only keyframe_points in the frame,not influenced other frame keys.

(3)Blending REPLACE and ADD

REPLACE override bone transformations with all bones having Pose Library's keys,ADD add bone transformations on current pose from Pose Library.

(4)Transform only selected bones(Only in POSE mode)

As same as that you can animate just selected bones with L-key + Mouse wheel.
But you need to make key from bone transformations,not from blending volume.

Problems

(1)How to catch frame change event?

Now this program run the callback procedure from 3D View redraw and INFO header redraw.
The reason catching from INFO is that 3D View redraw event can not be catched while rendering,so from INFO header's progress bar.

(2)Can not make pose volume key and bone transformation key at each bone

It looks to be possible by using PoseBone.bone.matrix and .head.
But it is possible by matrix and impossible matrix_local when the bone has parent,possible by matrix_local and impossible by matrix when not have parent.
What reason is this!?

(3)Need threading?