ユニティちゃんを歩かせる
はじめに
ユニティちゃんを(既存のPrefabでなく)前後に移動させることができたので記録として残します。
参考サイト:
準備(配置や設定)
適当にオブジェクトを(真似して)配置します。(配置の際にVキーでの頂点スナップというのも少し覚えました。)
配置したのはユニティちゃんのモデルだけなので、以前のように配置して即動かせるという訳でなく。
まずunitychanという名前でAnimator Controllerを作成し、それを予めunitychanモデルにAdd ComponentしておいたAnimatorのController欄に入力。
アニメーターunitychanの状態遷移を以下のように設定。
遷移条件のためのパラメータSpeedを設定。最初、パラメータの追加の仕方が分からず頭が?になりました。公式サイトのチュートリアル重要。
立ち、前進、後退のモーションにそれぞれユニティちゃんアセットのWaitと歩行前後をあてがって、(Foot IKもつけておきます)
状態遷移に条件(ここで前述したパラメータを使用。他に移動状態から立ち状態に戻る遷移もあります。)を設定し、Has Exit Timeのチェックを外します。外さないと状態遷移が即時発生しない?要勉強。
物理影響を与えるためRigidbodyを、地面を突き抜けないようCapsule Colliderをそれぞれアタッチ。
(Capsule Colliderの底の丸みのせいか、最初X,Z軸の回転を制約していなかった時、実行してしばらく経つとモデルがすっころがることに気付きました。)
スクリプト
ユニティちゃんの移動処理、およびAnimator ControllerのSpeedパラメータを操作するためのスクリプトをユニティちゃんにアタッチします。
Study for Unity that Charactor moving forward and ...
ありゃ。
(最初、移動方向は画面の左右X軸方向なので、Vector3.rightかと思ったのですがTransform.Translate()はrelativeTo変数がデフォルトだとモデル自身の軸になるので前後させるためにVector3.forwardに修正。)
Transform.Translate - Unity スクリプトリファレンス
完了
方向を修正して、前後に歩くようになりました。以上。
Numpyのrandom.choice()
はじめに
以下の本を進行中。4章に入って、後でも役に立ちそうな関数があったのでメモ。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
random.choice()
本の中で大量の訓練データの中から少数のデータをランダムに抽出して学習するミニバッチ学習が行われており、それで使うのがnumpy.random.choice()
numpy.random.choice — NumPy v1.15 Manual
ただ本の中だとreplace引数をFalseにしていないので、少ない確率でデータの重複が起こる可能性が残っている?
gist6e3645fdfde5fc430527ec0c5705ef8e
pパラメータとか
出現確率を制御できるみたいなので後で調べる。
勉強:ニューラルネットワーク:活性化関数
はじめに
下記の本を進めていく上で、メモとして。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
実装とグラフ出力
コードはこう。
gist1b625c7cd56ab79cd814d173deda40de
出力されるグラフ。
配列、リストをスペース(何かの文字列)区切りで出力する方法 in c#, python3
はじめに
よく問題を解いている paiza (競技プログラミング&就活サイト)で問題を解く際、配列やリストデータをスペース(または何某かの文字)区切りで出力することが多くあるので備忘録として書き残しておく。
C# や Pythonと複数の言語でやってみてどちらも Joinという名前の関数を使うと簡単だとわかり、以降、自分のググラビリティがあがったなあ、と思う。
C#
stringクラスのJoin関数で第一引数に区切り文字列、次に区切り対象の配列を当てればよい。
gist75b9b1467cd1e8b4d95173efe04e6b70
Python3
区切り文字列のjoinメソッドを呼び出して、引数に文字列のリスト(文字列でないとダメ)を当てる。数値のリストといった場合はmap関数でstr関数をマップするのが楽。
Unity chanアセットでサンプルのシーンを見る
Unity chanアセットのサンプルシーンを見るには
上記を参考にUnity chanアセットのScenesから3つのシーンを設定することでサンプルの確認ができました。
ちゃんとFile -> Build Settingsでシーン3つともScenes in Buildに登録しておくこと。(各サンプルシーンに別のシーンへの遷移があるので、登録しないまま動かしたらエラーを吐かれました。)
アクション、ポーズ、移動がそれぞれ見れるようになりました。
きっかけ
Unity chanのモデルだけ取り込んで移動の様子を見ていたところ、ジャンプ動作でアプリ停止になるとわかって、じゃあサンプルのシーンではどう処理しているのか見てみよう、というのがきっかけ。
(ただSendMessageじゃなくてメッセージシステムを使うのが普通のようですね。)
Unityで夕方を作ってみたかった
はじめに
比較対象としてデフォルト空間から。
夕方
ここを参考にアセットストアから WorldSkies Free というアセットを取得。Window -> Lighting -> SettingsからSkybox Materialsを取得したアセットの中のSky_matに設定する。
さらにDirectional Lightを(角度を変えて追加。デフォルトのライトは無効化する)追加して、ライトのカラーをskyboxとあった色に変更。(最初、影が発生しなかったので注意して見るとライトのShadow TypeがNo ShadowsだったのでSoft Shadowsに変更)
夕方(ライトは白色)
Skyboxの変更でも環境光に影響を与えるので、ライトを白に戻してみる。
影の縁には影響が出てますね。ユニティちゃんの肌や床は白いままなので、ライトの色の変更も同時に行うべきでしょうか。
追記
Skybox Series Freeというアセットを取得。Window -> Lighting -> SettingsのSkybox MaterialsにAmbienceExposureという空を設定。太陽が見えるようカメラ角度を変更した結果、こうなりました。
足元が浮いているように見えますね…
Unityについて書き始めてみる
まず実験するにもフィールドを作らければいけないと思ったんですが、よくある白黒チェックのフロアを作るにもどうするか悩むはめになり、とにかく某所からいただいたチェックの画像をテクスチャにplaneを配置して張り込む。(planeのスケールは[x:10,z:10])
タイリングが[x:1,y:1]のため、目いっぱいに広がっています。
なので、タイリングを20x20に変更してそれっぽくする。
とりあえず床はOK。