最後の旅を始めよう

-黒の英雄譚・零-

Blenderメモ

2021年12月30日 | 3DCG
Blenderの備忘録的なものです。
自分用のメモですので、なんだか見難くて申し訳ありません。

#ショートカット

#オフセット入力
数値入力フィールドに数式を作り入力

#画面4分割
[Alt] + [Ctrl] + [Q]


■モデリング
#編集モード
[Tab]

#ワイヤーフレーム
[Shift] + [Z]

#ループカット
[Ctrl] + [R]

#ベベル
[Ctrl] + [B]
#頂点にベベル
[Shift] + [Ctrl] + [B]

#エッジ編集
#エッジの割りを変える
[Ctrl] + [E] → [辺を時計回りに回転]
#クリース設定
[Ctrl] + [E] → [辺を時計回りに回転]

#フェース編集
#面を最適化
[Ctrl] + [F] → [面を最適化]

#押し出し
[Alt] + [E]

#剪断
[Shift] + [Ctrl] + [Alt] + [S]

#ナイフトポロジーツール
[K]
[Ctrl] で中央にスナップ
[Enter] で切り込みを決定する

#ブーリアン
[Ctrl ]+[J]で二つのモデルを統合
[編集モード]の面選択で穴を開けたいモデルのフェースを[L]でリンク選択して
[面]>[交差(ブーリアン)]
左下のウィンドウで設定を変更可能

#ポイントのマージ
[M]
※「距離」で結合すると重複した頂点の修正にも使える

#溶解(それのみを削除)
[Ctrl]+[X]

#ループ選択
[Alt]+選択

#リンク選択(XSIのアイランド選択)
[L]

#選択範囲の拡大・縮小
[Ctrl]+[+]or[ー]

#プロポーショナル編集(ソフト選択)
#プロポーショナル編集モードをオン
[O]
ホイールで影響範囲を変更

#サブディビジョンサーフェイス
[Ctrl]+[1]


■骨のセットアップ
#追加メニュー
[Shift] + [A]

#アーマチュア(骨構造)の作成
追加メニュー > アーマチュア

♯骨の追加
[Shift] + [E]

♯親子付け
右クリックメニュー >[ペアレント] > [作成] > [接続]

♯親子付けメニュー
[Shift] + [P]

♯ウェイト適用
スキン、骨の順で選択し
親子付けメニュー >ア ーマチュア変形 > 自動ウェイト

♯ウェイトペイントモード
適用された骨、スキンの順で選択すると[ウェイトペイントモード]が選択出来る様になる



■アニメーション
♯コマ送り
[Alt] + [マウスホイール]

#基本操作
♯秒を表示(タイムライン表示を秒とフレームで切り替える)
[Ctrl]+[T]

#基本操作

♯オブジェクト追加
[オブジェクトモード]の[追加]から任意のオブシェクトを選択
[編集モード]から[追加]した場合は、編集中のオブシェクトにマージされる形で追加

♯移動値の一致
ターゲット、ソースの順番で選択し
ソース側の[トランスフォーム]の一致させたい項目を右クリックし
[すべてを選択をコピー]もしくは[一つのみ選択にコピー]を選ぶ

関連-------------------------------------
Python_ネイティブ機能メモ
Python_xlrd機能メモ
バッチ作成メモ

Blenderの易しい使い方
【Blender Tips】知っておくとすごく役立つBlenderの機能108選

編集
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Python_エラーメモ

2021年12月20日 | その他・スクリプト
MayaPythonの備忘録的なものです。
自分用のメモですので、なんだか見難くて申し訳ありません。


#invalid syntax構文エラー
原因:Pythonの文法が間違っている
やりがちなのが、全角スペースを使っている、インデントが揃っていない等

#RuntimeErrorランタイムエラー
原因:プログラム実行の際に必要な部品や素材が見つからない場合に起こる
例)存在しないアトリビュートを指定してしまう等

#TypeErrorタイプエラー
原因:文字列型に対して演算する等、型に合わない処理を行うと起こる

#ValueErrorバリューエラー
原因:関数が対応できない値を渡した場合に起こる
例)数字以外の文字列を整数型に変更する等

#IndexErrorインデックスエラー
原因:リストの範囲外のインデックスを指定している
lList[5]←ここの数値をチェック

#AttributeErrorアトリビュートエラー
原因:オブジェクトの型を間違えている(文字列にリストを追加しようとする等)
ちなみにMAYAのアトリビュートとは関係無いので混乱注意

#UnicodeDecodeErrorユニコードエラー
原因:指定と読み込みで文字コードの設定が異なる
「ascii」になっていると言われた場合は
「u"文字列”」の様に頭に「u」をつけてユニコードを指定すると回避可能

#UnboundLocalアンバウンドローカルエラー
原因:変数を割り当てる前に参照しようとする
エラーログに該当の変数名が出るので、そこから確認していけば大抵解決できる


関連-------------------------------------
Python_ネイティブ機能メモ
Python_xlrd機能メモ
バッチ作成メモ

Python のよくある基本的なエラーと確認方法まとめ『キカガクの技術ブログ』

編集
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

UEメモ

2021年12月01日 | その他・スクリプト
【アニメーションBP作成方法】
「追加/インポート」(右クリックでも開ける)から[アニメーション]>[アニメーションBP]で作成
そのアイコンをダブルクリックして編集画面を開き「新規ステートマシン」からステートマシンノードを作成
「出力ポーズノード」の「Result」に接続
ステートマシンを開きステートを追加し「Entry」と接続。
ステートの編集画面を開きアニメーションノードを読み込んで「アニメーションポーズを出力」ノードの「Result」と繋ぐ
最低限の構造はこれで動く。

あとはアニメーションクラスにこのBPを指定する事でメッシュの対応が可能となる
(UE4の場合モーションデータは0フレーム開始の方が扱い易い)

【アクションをキーに割り当て】
[編集]>[プロジェクト設定]>[エンジン]>[インプット]から
「アクションマッピング」の「+」から新規のキー割り当てを追加する
キャラ操作のBPクラスを開き
「イベントグラフ」タブ内にキー操作のアルゴリズムを組む
まず、右クリックでノード作成メニューを開き
[インプット]>[アクションイベント]から先程作成した新規のキー割り当ての
インプットアクションノードを作成する
ボタンを押した信号を受け取る為の変数(ブール型)を作成し
その変数ノードを二つ作成しブールのチェックを入れたものと外したものにしておく
インプットアクションノードの
「pressed」とチェックを入れた変数と繋ぎ
「Releasend」とチェックを外した変数と繋ぐ
アニメーションBPから「イベントグラフ」を開き
設定したキャラ操作のBPをキャストノードとして読み込む
ノード作成メニュー[ユーティリティ]>[キャスティング]
(量が多いので検索で探した方が早そう)
「GetPlayerCharacter」ノードを作成しキャストノードの「Object」に接続
更に「As[キャラ操作BP名]」をドラックで何も無い空間を選び
ノード作成メニュー[変数]>[デフォルト]から作成した変数を選択して
出力ノードを作成する
新規でステートマシンにフラグを流す用の変数(ブール型)を作成し
出力ノードと接続
アニメーションBPのステートマシンを開き、新規ステートを作成
ボタンを押した際に再生したいモーションを出力と接続する
アイドルのステートと作成したステートを遷移と戻りで繋ぎ
遷移条件にはステートマシンにフラグを流す用の変数と繋ぎ
戻り条件には「TimeRemaining」終了の「<」の計算で繋ぐ


【モーションリターゲット】(骨名が統一されている場合)
まずスケルタルメッシュをインポートする
読み込んだスケルトンに右クリックメニューから
[作成する]>[リグを作成]からリグを作成する
(このとき必要のない骨は除く事が出来る)
このリグをソースとターゲット両方のスケルトンに適用する
スケルトンエディタを開き[リターゲットマネージャー]タブの
[リグを設定]から[リグを選択]のプルダウンメニューから設定
リターゲットしたいモーション(アニメーションシーケンス)を選択し
右クリックメニューから「Arnimアセットをリターゲットする」を選択
リグの適用されているスケルトンからターゲットモデルのものを選択し
書き出し先のフォルダを指定し[リターゲット]を押す


【ルートモーション】
ルートモーションの移動分をプレイヤーの移動にも反映する
アニメーションアセットから
[アセット詳細]>[ルートモーション]>[EnabelRootMotion]にチェック
アニメーションブループリントから
[クラスのデフォルト]>[ルートモーション]>[Root Motion Mode]>[Root Motion from Everything]


【揺れもの設定】
物理アセットから骨をシミュレーション制御する場合
物理アセットを作成後、任意の骨に[ツール]>[ボディ作成]から
コリジョンを作成する(コンストレインも同時に作成される)
コリジョンのサイズを調整したら右クリックメニューを開き
[コリジョン]>[すべてのコリジョンを有効にする]でコリジョンを有効にする
[シミュレート]から状況を確認出来る
シミュレーションを入れたくないコリジョンは[物理タイプ]を[キネマティック]にする
移動制限を設ける場合は、コンストレインの[Angular Limits]の設定を[Limited]にして
制限値を指定する
また、重力の影響を受けにくい軽いものを設定する場合は[物理]>[Linear Damping]を上げる
[PhysicsType]を[Simulated]にする事でアイテムのシミュレーションが常に入る


【KawaiiPhysics】
ダウンロード
https://github.com/pafuhana1213/KawaiiPhysics/releases/
プラグインを設定し、ノードを作成して出力とモーションの間に繋ぐ
[PhysicsSettings]
Damping(減衰)0.2
WorldDampingLocation 0.8
WorldDampingRotation 0.8
Stiffness(剛性)0.005
Radius(コリジョンの半径)
LimitAngle(限界角度)50

※コリジョンをヴューに反映させる為には一度コンパイルを行う必要がある

【プラグイン設定】
・プロジェクト単位でプラグインを適用する場合は、
プロジェクトフォルダ内に「Plugins」フォルダを作成しそこに入れるだけで適用させる
・エンジンのプラグインでエラーが出てプロジェクトが立ち上がらない場合
プロジェクトフォルダ内にある「.uproject」ファイルをメモ帳で開くと
「 "Plugins": [ 」が追加されているので、その中のエラーの原因のプラグインを消せば
プロジェクトは立ち上がる様になる


【シーケンサーのセットアップ】
1、シーケンスの追加
インターフェース左上にあるカチンコアイコンから
「レベルシーケンスを追加」>シーケンサーの保存先を決め「保存」
2、カメラの追加
シーケンサーのカメラアイコンから「カメラ」を作成
アニメーションをFBXから呼ぶ場合は「CameraComponent」の名前をFBXのカメラと揃え
右クリックメニューから「インポート」で読み込む
(このときZupX正面として読み込まれるので
「Cine Camera Actor」の回転Xに90°を入れオフセットしてやる必要がある)
3アクターの追加
スケルタルメッシュをシーケンサーにドラック&ドロップでアクターとして読み込む
「アニメーション」の「+」アイコンからモーションを適用

【ニアクリッププレーン】
UEのニアクリップ情報は「プロジェクト設定」に持っている
[プロジェクト設定]>[エンジン]>[基本設定]>[設定]>[平面近傍のクリップ]
※設定後は再起動の必要アリ

【カメラの切り替え・シーケンサーの再生】
https://unrealengine.hatenablog.com/entry/2015/09/26/215004
https://lunanelis.hatenablog.com/entry/2021/02/24/022220
切り替えというよりは同期と言った感じか?

【別レベルでシーケンサーを再生】
基本的にはブループリントでレベルとシーケンサーを両方呼ぶ事で出来る
1、別レベルとそれに対応したシーケンサーを用意する
2、「ウィンドウ」>「アクターを配置」>「TriggerBox」から
マップにトリガーボックスを配置する
3、プループリントアイコンから「レベルブループリント」を開き
作成したトリガーボックスを選択した状態で「On Actor Begin Overlap」ノードを作成
4、「OpenLevel」ノードを作成し、開くレベル名を指定して
「Add On Actor Begin Overlap」と接続する
これでトリガを踏むと任意のレベルに飛べる様になる
5、次は呼ぶ側のレベルに移行したらシーケンスを再生するという命令を組む
呼ぶ側のレベルに再生したいシーケンサーを置き「レベルブループリントを開く」
6、まずは「EventBeginPlay」ノードを作成し、イベント開始トリガーとする
アウトライナ等から呼び出したいシーケンサーを選択した状態で
ブループリントエディタの右クリックメニューからシーケンスのリファレンスノードを作成し
参照からドラッグして「Play (SequencePlayer)」ノードを作成する
それを「EventBeginPlay」ノードと接続する
これでトリガを踏むと別レベルに飛んでシーケンサーが再生される

【別レベルから戻ってくる】
別レベルでシーケンサーを再生した後に元のレベルに戻る方法
1、再生するシーケンサーに「イベントトラック」を作成し、動画の最後にキーを打つ
2、キーの右クリックメニューから「プロパティ」>「イベント」のプルダウンメニューから
「新規エンドポイントを作成」を選ぶとブループリントにエンドポイントが作成される
3、エンドポイントの実行からドラッグして「OpenLevel」ノードを作成して
開くレベル名を指定する事で、シーケンサーが終わると該当のレベルに戻れる
https://historia.co.jp/archives/10445/


【プレイヤーキャラの操作】
プレイヤーの方向をカメラに追従させる
[CharacterMovement]>[ポーン]>[Use Controller Rotation Yaw]
プレイヤーの方向をキー入力に合わせる
[CharacterMovement]>[キャラクタ移動(回転設定)]>[Orient Rotation to Movement]


【マテリアル】

【Lumen】
https://www.youtube.com/watch?v=nfGhrZLMY9g
【MatCapマテリアル】
https://www.youtube.com/watch?v=oaPCR3_vzRY
【マンガで使う!初めての Unreal Engine】
https://www.youtube.com/watch?v=aPpcflAxbtg


【GPUビジュアライザー】
[Ctrl] + [Shift] + [,]

【Stat コマンド】
ゲームの情報を表示するコンソール コマンド
ゲーム再生中に「@」を押すとプレビュー下部に開かれるのでそこに任意のコマンドを入れる
https://docs.unrealengine.com/4.26/ja/TestingAndOptimization/PerformanceAndProfiling/StatCommands/


【UE5・Python】
https://docs.unrealengine.com/5.0/ja/control-rig-python-scripting-in-unreal-engine/
コントロールリグのPythonログ
コントロールリグエディタを開いた状態で「ウィンドウ」>「メッセージログ」を開き
「コントロールリグのPythonログ」からログを確認できます。
アウトプットログ
Pythonのスクリプトテストはアウトプットログの入力から行えます。
その際、モードは「Python」にしておく必要があります。


【UE5・コントロールリグ】
モーション編集
任意のレベルにリグをD&Dすると「アニメーションモード」に切り替わる
「セクション」を右クリックして「このセクションにアニメーションシーケンスをインポート」から
任意のアニメーションシーケンスを読み込む事で、そのモーションをリグコントローラに焼き込める。
編集した、モーションをアニメーションシーケンスとして扱う場合、
「スケルタルメッシュコンポーネント」を右クリックで「リンクされたアニメーションシーケンスを作成」で
書き出すフォルダを指定し「アニメーションシーケンスにエクスポート」を押します。


【UE5・コンパーチブルスケルトン】
別スケルトンアセットのモーションを参照出来る様にする
スケルトンアセットエディタから「ウィンドウ」>「アセット詳細」でアセット詳細を開き
「Comoatible Skeletons」欄の「+」で参照スケルトンアセット覧を追加して、
そこに任意のスケルトンアセットを設定する

そのままだと体形(骨の移動値)を直に反映してしまうので、
スケルトンツリーの設定(歯車アイコン)から「リターゲットオプションを表示」で
「トランスレーションのリターゲティング」列を表示し、
「Animaition」を「Skeleton」に変更すると回転値のみを参照する様になります。
ちなみに、右クリックメニューから「移動リターゲティングスケルトンを再帰的に設定」で
子供もまとめて変更する事が出来ます。
ただし、腰の骨をこの設定にしてしまうと、上下移動等が死んでしまいます。



関連-------------------------------------
編集
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする