2010-08-22

【Blender】便利そうなショートカットとか基本的な使い方の個人的メモ

画面操作
・画面の回転:マウス中ボタンでドラッグ
・画面の平行移動:マウス中ボタン + Shiftでドラッグ
・画面のズームイン/アウト:ホイール回転 or マウス中ボタン + Ctrlでドラッグ

(視野は画面内メニュー「View」からも変更可能)
・カメラ視野:テンキー0
・正面視野:テンキー1
・横視野:テンキー3
・上視野:テンキー7

各モード共通
【選択系】
・全選択 or 選択解除:aキー
・選択:右クリック
・フリーハンド範囲選択:左ドラッグ + Ctrl
・矩形範囲選択:bキーを1回押した後、左ドラッグ
・円範囲選択:bキーを2回押した後、左ドラッグ
・範囲選択離脱:Escキー or 右クリック

【選択後の操作】
・平行移動:左ドラッグで直線にマウスジェスチャー or 右ドラッグ or Gキー
・回転:左ドラッグで曲線にマウスジェスチャー or Rキー
・拡大縮小:左ドラッグでV字にマウスジェスチャー or Sキー
・複製:Shift + Dキー
・別々のオブジェクト1つにする:Ctrl + Jキー

主にオブジェクトモードで
(エディットモードを使うとオブジェクト中心がずれる場合がある)
・オブジェクト中心を移動先に修正:オブジェクト選択後「Center New」ボタン
・オブジェクト中心にオブジェクトを移動:オブジェクト選択後「Center」ボタン

主にエディットモードで
・ナイフ機能:Kキー
・面を貼る機能:Fキー
・カーソル付近の対象とその対象に接続されているものをすべて選択:Lキー
・選択モード(Vertex, Edge, Face)変更:Ctrl + Tabで選択メニュー表示
・Specialメニュ:対象選択後、Wキー。
  「Subdivide」 - メッシュ分割
  「Subdivide Multi」 - メッシュ分割(分割回数指定)
  「Subdivide Multi Fractal」 - メッシュ分割後、Vertexの位置がランダムに移動(クシャクシャにした紙)
  「Subdivide Smooth」 - メッシュ分割後、球に近づくようにVertexの位置が移動

その他
(3Dの操作系の表示/非表示、各マニュピレータの選択など)
・マニュピレータのウインドウ表示:Ctrl+Spaceキー

(3Dカーソルの位置を基点にしてオブジェクト生成などが行われる)
・3Dカーソルの移動:画面中を左クリック

(レイヤーは固定で20個用意されている。表示・非表示が選択できる)
・レイヤー1-10切り替え:数字キー
・レイヤー11-20切り替え:数字キー + Alt
・レイヤー複数選択:数字キー (+ Alt) + Shift
・オブジェクトのレイヤー移動:オブジェクト選択後、Mキーでレイヤー選択ウインドウ表示

・その場にメニュー表示:Space
・オブジェクトモードとエディットモードの切り替え:Tab
・ユーザ情報(画面配置など)の保存:Ctrl + u

2010-08-11

ニコスクリプトとニワン語のメモ・その3

ニコスクリプト、ニワン語のメモその3。
一番重要な関数の説明を忘れていた。

commentTrigger(then:式,timer:有効時間)
省略形はctrig。then:は省略可。
おそらく、ニワン語でもっとも重要な関数。
有効時間内にニコ動中のコメントがが画面に表示される度にthen以下の処理を行う。
以下、ポイント。

1. 関数が有効になるのはユーザーが投稿した瞬間ではない
正確には、現在投稿されている(コメントサーバに登録されている)コメントをすべて検出する。
これを勘違いするとハマる。

したがって、特にコメント数が多いときにこの関数が有効になっていると、全てのコメントにおいて、commentTriggerが発動するため、動作が重たくなりやすい。
弾幕に対して適用したりすると、PC環境や動画が止まる可能性もあるため、使用する際は有効時間を短く設定するなどの対策が必要。

2. 定義変数chatを上手く使え!
実は、ニワン語にはすでにchatという変数が宣言されている。
これはcommentTriggerが発動した際、そのコメント情報がchatに記録されるようになっている。
chatの持つ情報は以下のようになる。
chat.message:コメントの内容(文字列)
chat.vpos:コメントの再生位置(時間)
chat.isYourPost
コメントの投稿者が現在の視聴者 => true
それ以外 => false
chat.mail:コマンド欄の内容
chat.fromButton
コメントのコマンド欄にfrom_buttonがある => true
それ以外 => false
chat.isPremium
コメントの投稿者がプレミアム会員 => true
それ以外 => false
chat.color:コメントの色(0~16777215)。未指定の場合はundefined
chat.size
コメントの文字サイズ。medium、big、smallの順に0、1、2。未指定の場合はundefined
現在の視聴者が投稿したコメントを判別する例。
20::/ commentTrigger(then:if(chat.isYourPost, then:dt('お前、コメントしたな!')), timer:10)
△動画開始20秒目から10秒間コメントを検出。その間のコメントが現在の視聴者のコメントだったなら、"お前、コメントしたな!"とコメント表示。


BGM(id:動画ID,x:x座標,y:y座標,width:幅,height:高さ,visual:表示方法,volume:音量)
外部からBGMとして使用する動画を定義する関数。
visualはtrueで参照動画を小窓に表示。x,y,width,heighは小窓の位置、幅、高さ。

この関数により定義されると、0番から順に番号がふられる。
再生、ポーズをしたい場合は、その番号を使って、以下の関数を呼び出すことで可能。
playBGM(番号) 
stopBGM(番号)
なお、これらの機能は、ニコスクリプトにおける「@BGM、@ポーズ」と同様のもの。

1. 外部BGM参照できる動画の条件
動画情報で「@BGMとして使用の設定」が許可されていること。
しかし、ニコニコムービーメーカーを使う場合は2MB以下にしないと上記の項目を許可することができないので注意。
自分がうpした動画以外では、「@BGM推奨」タグが付いている動画であれば参照可能。

2. BGMはseekの影響を受けない
seekで動画内をジャンプしても、BGMで参照した音声は途切れることはなくそのまま再生される。
そのため、seekの多い動画でもBGMは飛ばしたくない場合などに有効だと考えられる。


def_kari(obj , script)
オブジェクト(関数)を作成する関数。
objと記述するとscriptを実行する。
コードが長い場合、同じ処理を繰り返し行う際に有効。
引数を渡すことも可。以下、サンプル。
0::/def_kari('love',dt($1 + target + $2 + $1))
10::/love('かわいいよ',target:'ミク','さん')
△10秒目に"かわいいよミクさんかわいいよ"とコメント表示。