スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BlenderでBVHを使ってみる

Blenderには標準でBVH読み込み機能がついているようだ。

早速読み込んでみるとボーン(Armature)とモーションがしっかり再生される。
さて、、、どうやってこれを使うか・・

せっかくBVHが大量にあるので、この際だしBVHで生成されるボーンの名前にそったリグを作成してしまうことにした。

初めてゲームを作成するのなら私が作成した順の逆から攻めたほうが効率が良かったのかもしれない。

効率的だと思われる順
モーションを作ったりBVHを集める→ボーンを作る→影響度を考えてモデルを作成→テクスチャを張る


私がやった順
テクスチャを作成したり書きかたを勉強→モデル作成→ボーン作成→影響度を入れ→モーション作成


・・・・・・・


私の持っているBVHファイルはすべてのフレームにキーが打ってあるため綺麗だが重い。
そんな時のために一定間隔で飛ばしながら選択してくれるスクリプトを書いた。
これを実行してdelキーでフレームを削除すれば飛び飛びにキーが打ってある状態になる

~スクリプト~(countを変えると間隔が変わります)
コピーの際全角スペースに注意してください。Fc2ブログは半角スペースやタブがはいらんとです!

import Blender

### koko ####
count=5
############

winid = Blender.Window.GetScreenInfo(Blender.Window.Types.ACTION)[0]['id']

Blender.Window.SetKeyQualifiers(Blender.Window.Qual.CTRL+Blender.Window.Qual.ALT)
Blender.Window.QAdd(winid, Blender.Draw.PKEY,1)
Blender.Window.QHandle(winid)
Blender.Window.QAdd(winid, Blender.Draw.PKEY,0)
Blender.Window.SetKeyQualifiers(0)

for i in range(Blender.Scene.getCurrent().getRenderingContext().endFrame()):
  if (i%count)!=0:
    Blender.Set('curframe',i+1)
    Blender.Window.SetKeyQualifiers(Blender.Window.Qual.CTRL)
    Blender.Window.QAdd(winid, Blender.Draw.KKEY,1)
    Blender.Window.QHandle(winid)
    Blender.Window.QAdd(winid, Blender.Draw.KKEY,0)
    Blender.Window.SetKeyQualifiers(0)

Blender.Redraw(Blender.Window.Types.ACTION)


すごいの期待した人いたらごめんなさい。
載せるまでも無いようなスクリプトです(涙
テキストエディタにでもコピペしてAlt+Pを押すと実行できます(試してないけどアクションエディタがどこかに無いとエラーになるかも)


これで軽くなったら自分の好きな速さに調整します。
(アクションエディタでフレームを最初に合わせてS→shiftを押しながら好きな場所でクリック)
FPS弄っても全然OKですが一定で書き出さないとゲーム側でFPSを考慮して作成しなくてはいけません。(そういえば以前そういう風に作ったっけ・・・)

使わないモーション部分を消したら読み込み完了。あとは好きに弄るだけですね。
(フレーム線の前後をAlt+右クリックで選択が楽にできる またタイムラインエディタでSやEを押すことで現在のフレームをstartやendに一発設定できる)




またもや文字だらけブログでした~


ねよっと。
スポンサーサイト

通りすがりのおじさま。ありがとうございます!

通りすがりのおじさま。貴重な資料をありがとうございます!
(過去のコメント欄参照)

さっそくDLしてテキストを調べてみると
USAGE RIGHTS:

CMU places no restrictions on the use of the original dataset, and I
(Bruce) place no additional restrictions on the use of this particular
BVH conversion.

Here's the relevant paragraph from mocap.cs.cmu.edu:

Use this data! This data is free for use in research and commercial
projects worldwide.

訳:
用法権利:

CMUはオリジナルのデータセットの使用の制限を全く置きません、そして、私(ブルース)はこの特定のBVH変換の使用のどんな追加制限も置きません。

ここに、mocap.cs.cmu.eduからの関連パラグラフがあります:

このデータを使用してください! 世界中の研究と営利目的の企画における使用において、このデータは無料です。


と記述されており、ライセンス的にもデータを使いまわせることがわかり大変嬉しく思っております。
現在作成中のLinuxサーバまわりが落ち着きましたらBVHをBlenderに取り込みモーションを作成したいと思います。
その際は分かりにくいと思いますが記事にしたいと思います!

通りすがりのおじさまのような方がいらっしゃるとこのブログをやっていてよかったなぁ~と心から思います。
本当にありがとうございました。


ねよっと!

Linuxでファイアウォールを作成

ゲーム製作から途方も無くかけ離れてる気がしないでもないですが、ネット部分を作成するにあたって絶対必要であろうFWの作成メモです。

〜 iptablesを使ってFWを構築 〜

iptables とは IPv4 のパケットフィルタと NAT を管理するサービスである

まずテーブルとチェインという概念がある
テーブルは三つ存在し、指定がないとデフォルトであるfilterが使用される
チェインはいくつもの「ルール」を重ねて作成してある
このルールの壁こそがFWとなるわけである


ルールを追加するときはiptables コマンドを使用する
iptables [-t table] -[AD] チェイン ルールの詳細 [オプション]
iptables [-t table] -I チェイン [ルール番号] ルールの詳細 [オプション]
iptables [-t table] -R チェイン ルール番号 ルールの詳細 [オプション]
iptables [-t table] -D チェイン ルール番号 [オプション]
iptables [-t table] -[LFZ] [チェイン] [オプション]
iptables [-t table] -N チェイン
iptables [-t table] -X [チェイン]
iptables [-t table] -P チェイン ターゲット [オプション]
iptables [-t table] -E 旧チェイン名 新チェイン名
複数の異なるテーブルを定義できる
各テーブルにはたくさんの組み込み済みチェインが含まれており、さらにユーザー定義のチェインを加えることもできる

設定されたFWのルールに当てはまった場合どうするか?というパケットの行動を決めるのが「ターゲット」である
ターゲットの種類は以下
------------------------------
ACCEPT パケットの通過を許可
DROP  パケットを破棄
QUEUE ユーザー空間に渡す(カーネルがサポートしていれば)
RETURN このチェインの検討を中止して、以前の (呼び出し元) チェイン内の次のルールから検討を再開  
------------------------------


テーブルは全部で3種類存在する
------------------------------
【テーブル】 :【登録されている組み込みチェイン】
①filter  INPUT、FORWARD、OUTPUT
②nat  PREROUTING、OUTPUT、POSTROUTING
③mangle  PREROUTING、OUTPUT カーネル2.4.18からはこれらの他に INPUT、FORWARD、POSTROUTING
------------------------------


上記であげたチェインの説明
------------------------------
INPUT 入力(受信)パケット
OUTPUT 出力(送信)パケット
FORWARD フォワードするパケット
PREROUTING 受信時に変換するチェイン
POSTROUTING 送信時に変換するチェイン
------------------------------





iptables で使えるオプションは、いくつかのグループに分けられる

コマンド 以下の説明で注記されていない限り、コマンドラインで指定できるのはこの中の 1 つだけである
------------------------------
-A(--append) chain :chain に条件やアクション(ルール)を追加します。
-P(--policy) chain :chain の基本となるルールを決定します。
-D(--delete) chain :指定チェインから1つ以上のルールを削除
-N(--new-chain)chain :新しいユーザー定義チェインを作成
-X(--delete-chain)chain :指定ユーザー定義チェインを削除
-F chain :条件の合致する chain を削除します。chain 省略時は「全て」削除します。
------------------------------


パラメータ 以下のパラメータは (add, delete, insert, replace, append コマンドで用いられて) ルールの仕様を決める。
------------------------------
-p (--protocol) :プロコトル ルールで使うプロトコル(tcp、udp、icmp、all)を指定
-s (--source) :IPアドレス[/mask] 送信元アドレス。IPアドレスのほかにホスト名などでも指定できる
-d (--destination) :IPアドレス[/mask] 接続先アドレス。IPアドレスのほかにホスト名などでも指定できる
-i (--in-interface) :デバイス パケットが入ってくるインターフェイス(eth0、eth1など)を指定
-o (--out-interface):デバイス パケットが出ていくインターフェイスを指定
-j (--jump) :ターゲット パケットがマッチしたときのアクション(ターゲット)を指定
-t (--table) :テーブル テーブル(filter、nat、mangle)を指定
------------------------------


その他のオプション
------------------------------
-v(--verbose)
詳細な出力を行う。 list コマンドの際に、
インターフェース名・ (もしあれば) ルールのオプション・TOS マスクを表示させる。
パケットとバイトカウンタも表示される。
このオプションを append, insert, delete, replace コマンドに適用すると、ルールについての詳細な情報を表示
-n(--numeric)
数値による出力を行う。 IP アドレスやポート番号を数値によるフォー
マットで表示する。デフォルトでは、iptables は (可能であれば)
これらの情報をホスト名・ネットワーク名・サービス名で表示しようとする。

-x(--exact)
厳密な数値で表示する。パケットカウンタとバイトカウン タ を 、
K(1000 の何倍か)・M (1000K の何倍か)・G (1000M の何倍か) ではなく
厳密な値で表示する。このオプションは、 -L コマンドとしか関係しない。

--line-numbers
ルールを一覧表示する際、そのルールがチェインのどの位置にあるかを表す行番号を各行の始めに付加する。

--modprobe=command
チェインにルールを追加または挿入する際に、 (ターゲットやマッチング の 拡張などで)
必要なモジュールをロードするために使う commandを指定する。

------------------------------



・iptablesの設定の流れ
 1.チェインのポリシーを決める
 2.現在設定されているルールをクリアする
 3.新しいルールを設定する
 4.再起動すると戻ってしまうので作成した設定をセーブする
 5.iptables を再起動する


================================================
             例(あくまで例)
================================================
1. チェインのポリシーを決める(以降のルールにマッチしなかった場合に適用するデフォルトルール)
 INPUT については、一旦すべて ACCEPT(許可) します。
 FORWARD は使わないので DROP(破棄) します。
 OUTPUT は、すべて ACCEPT(許可) します。
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
 
※FORWARD はルータとして動作させるときに設定します。

2. 現在設定されているルールをクリアする
 最初にルールをクリアしておきます。
sudo iptables -F

3. 新しいルールを設定する(例)
 icmp(ping)と自端末からの入力を許可
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT

 Web、FTP、POP、smtp による接続を許可
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 110 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 25 -j ACCEPT

 ssh による接続を許可
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT ローカルの他端末からWebminでの接続を許可(Webminのポート:10000)
sudo iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 10000 -j ACCEPT 
TCPの接続開始と応答、FTPデータなどを許可
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
他の接続はすべて破棄(ポリシーの再設定)
sudo iptables -P INPUT DROP

4. 再起動すると戻ってしまうので作成した設定をセーブする
 このままではサーバを再起動すると設定が消える。
 ルールをセーブする
sudo /etc/init.d/iptables save

5. iptables を再起動する
sudo service iptables restart



<超重要!!>
・ルールの評価順?
ルールは記述した順番に評価されていくことになる
どれにも当てはまらない(ターゲットで飛ばされない)場合ポリシーで指定されたターゲットに飛ばされる


・ユーザ定義チェーンのルールはいつ評価されるのか?
まずユーザ定義チェーンには、チェーンの末尾に達した時に適用するデフォルトポリシーを指定することはできない。
それが可能なのはビルトインチェーンだけ。
ポリシーを書き込んだのと同じ動作をさせる事は可能。ルールを末尾にポリシーのそれを書き込めばよい。
ユーザ定義チェーンでいずれのルールもマッチしなかった場合、規定の動作では、元のチェーンへ戻る。
戻る場所は自身へ飛ばすことになったルールの真下である。

プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。