トップページgamedev
1001コメント322KB

【3Dゲームエンジン】Unity 8

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2012/01/23(月) 13:42:14.72ID:nCTiWtyJ
3Dゲームエンジン「Unity」のスレです。

公式サイト(英語)
ttp://unity3d.com/unity/

Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。

wiki
ttp://www24.atwiki.jp/unity2ch/

前スレ
【3Dゲームエンジン】Unity 7
http://toro.2ch.net/test/read.cgi/gamedev/1324320163/
0327名前は開発中のものです。2012/02/01(水) 19:19:52.30ID:/aTPJiQQ
>>326
Unityでドラクエみたいなシーン切り替え型のゲームを作るのは多少手間がかかるぞ。
Unityのシーンは基本的に前のシーンを完全に捨てて新しいシーンを実行する(例外はDon'tDetroy指定)。
LoadLevelAdditiveは前のシーンに新しいシーンを加算するので新古が混在する。
従ってドラクエのようなエンカウント戦闘型のゲームを作る場合、
1. シーンの進行をTime.timeScale=0で止める(止められるように作っておく)
2. LoadLevelAdditiveで戦闘シーンをロードして実行
  こっちのシーンはTime.timeScale=0で止まらないように作っておく
3. 戦闘が終わったら全部削除してTime.timeScale=1にして再開
フィールドと戦闘シーンは独立して開発できる。
ゲームでよくあるコンフィグ画面とかもこの方式だ。
Unity本はこういう事を解説しろよと思う。バンナム本にも書いてないし....





0328名前は開発中のものです。2012/02/01(水) 19:38:19.41ID:Wtm7WDVh
>>327
コンフィグ画面みたいな加算シーン時の基底シーン管理は本来プログラムがやるもんで、timeScaleを使うべきじゃない
個人製作ならそれでいいかもしれんが本に書いて人に勧めるようなtipsではない

それにコンフィグならまだしも戦闘シーンをtimeScale非依存で作るのは相当めんどいぞ
0329名前は開発中のものです。2012/02/01(水) 20:16:34.79ID:AXXKDREL
同じシーンに、フィールドの場所と戦闘の場所作っておいて、いったりきたりってのはできないの?
0330名前は開発中のものです。2012/02/01(水) 20:46:33.14ID:/aTPJiQQ
>>328
それは一般的なゲーム制作での話だろう。
Unityでは(そういうシーンのステート管理ができないので)シーンのポーズは
timeScale=0でやるのがUnity Answersなどを見る限り一般的だ。
もちろんPause()関数を全オブジェクトに用意してもいい。
3Dと2Dのシーンの切り替えは上で書いた方法でやるしかない。
少なくともUnityでは。

0331名前は開発中のものです。2012/02/01(水) 22:41:24.01ID:pKSScDd9
シーン管理なんてUnity上でも自分で書くだけじゃん
APIが無いからUnityでは出来ないとか、なんだそりゃ
0332名前は開発中のものです。2012/02/01(水) 22:45:22.06ID:llm71DrH
誰かコンテスト目指さんの?
0333名前は開発中のものです。2012/02/01(水) 22:49:31.60ID:aP3l/Hge
まあ、unityのシーンは使わずにゲームオブジェクト2つ用意して
それをシーンと見立てて表示、非表示切り替えた方が楽だねぇ
新しいオブジェクトはそいつらにくっつける感じで。

unityのシーンは一括して読み込む単位とだけ考えたほうがよさげ
0334名前は開発中のものです。2012/02/01(水) 22:51:30.54ID:aP3l/Hge
だからシーンじゃなくてロードレベルなんて名前してんのかな?
0335名前は開発中のものです。2012/02/01(水) 23:11:06.47ID:D+xFxmiA
>>331-333
それは無意味
0336名前は開発中のものです。2012/02/01(水) 23:33:22.20ID:WCF5w/1e
オブジェクトのコンポーネントにあるスクリプトの名前を取得する方法ってある?
0337名前は開発中のものです。2012/02/01(水) 23:35:27.60ID:Q4b7VQRU
>>311
その細々としたものを洗い出して、それぞれのサンプルを作るとかかなあ、
別フィールド移動ならシーン間でのデータ共有サンプル作ったり、
タイマンならサンドバック攻撃するサンプル作ったり、その過程でパーティクルでエフェクト作ったり、

どんなタイマン画面か分からんけど、往年の2D格ゲーみたいにモーションエディタのUnity版作って
2D格げーと同じ感覚で実装できるように環境構築するってのも良いかも分からんね。
0338名前は開発中のものです。2012/02/02(木) 01:36:29.56ID:w+qsRCXW
答えてくれるのはありがたいけど、どの程度まで信用していいのかいまいち分からないな

仕事でゲーム設計に精通している人の答えなら喜んで吸収したいし、ありがたいけど
そうでもない人が知ったかぶって答えたりするのはご遠慮願いたい

まあ、些細な質問になら答えてもいいけどな
0339名前は開発中のものです。2012/02/02(木) 01:59:39.32ID:ONbYAniM
なんという上から目線w
0340名前は開発中のものです。2012/02/02(木) 02:06:57.87ID:6y0DCMNX
>>338がガキすぎるw
0341名前は開発中のものです。2012/02/02(木) 03:20:52.79ID:O8lUf1+r
>>338
じゃあ仕事でゲーム設計に精通した人に聞きなよw
そんなふうに考えてるのに2chで質問するオマエの頭がおかしいよwww
0342名前は開発中のものです。2012/02/02(木) 05:55:36.42ID:IT+qcB3b
>>330
timeScale=0はコンフィグ設定時にゲームの時間を止める手段だろ。
戦闘シーン切り替えで使う手段じゃない。
戦闘ロジックでも時間の流れは絶対必要なんだから。

フィールドで使うオブジェのUpdateの頭で戦闘中かフラグをチェックして、
もしそうならreturnで何もしなきゃいいだけ。
そういう共通処理を持った親クラスから継承してもいい。
ゲームのロジックの問題なのでエンジンレベルで関与する必要はない。
0343名前は開発中のものです。2012/02/02(木) 06:08:07.22ID:sut+YWne
>>338
そういうのプロでも手探りだから
結局、手が早くないとこの分野っていろいろやること多くて何も完成しないよ
0344名前は開発中のものです。2012/02/02(木) 08:47:05.74ID:2UCdhMnX
getcomponentがスクリプトを型指定しないと変更できないのが痛いな。
動的に変更する事がほぼできない。
0345名前は開発中のものです。2012/02/02(木) 08:59:01.75ID:d9L2nvXf
スーファミ風の二次元ゲームしか作れないおっさんプログラマがUnityをdisっているのをバカ発見器でよくみかけるけれども。あれは何なんだろうな。
0346名前は開発中のものです。2012/02/02(木) 09:07:33.49ID:2UCdhMnX
スクリプト型で宣言したスクリプト名でないとgetcomponentに入れられない。
型を動的に作って宣言しないと参照先のスクリプトを変更できない。
getcomponentにかわる機能は無いのか。
0347名前は開発中のものです。2012/02/02(木) 09:50:32.78ID:Eqs5Fw8z
>>339-341
オレが漠然と思ってた事をうまく表してくれたようだな、ありがとう
0348名前は開発中のものです。2012/02/02(木) 09:57:42.20ID:3hEf+aLc
>>346
マジレスするとお前は作り方間違ってるからもう一度一から考えたほうがいい
0349名前は開発中のものです。2012/02/02(木) 10:07:45.80ID:1d7wnEMf
>>345

Unityのフォーラムもそんな感じw
過去プログラマーだった人がこんな感じだと思うけどどうなの?
っていう形でスクリプト晒してくるけど何かイマイチピントがズレているみたいな
感じだな。
0350名前は開発中のものです。2012/02/02(木) 10:12:04.79ID:gfO9NudS
なんかちょいちょいコンポーネントとしてスクリプトを特定して入れ換える、みたいな話出てるけど同じ人だろうか
普通はそういうアプローチじゃなくて、処理を分岐するロジックを実装すると思う

具体的には、>>342 も触れてたり(密結合)、>>297も書いてるが(粗結合)、処理の担当範囲で分離して
それを利用する形だと思う

>>335
どこが無意味か説明を
0351名前は開発中のものです。2012/02/02(木) 10:21:14.23ID:/r7ez3h1
>>349
俺現プログラマだけど、おっさんに限らず、人は人だからほっとくべき
あと2Dゲーも3Dゲーも、描画や位置管理の方法とそれ周りの処理が違うだけで、
自分が作成する本来の目的、ゲームロジックって範疇で言えば同じことだから
2Dや3Dって点だけで、もしも切り分けて文句言う人なんていたら、スルーしておk。相手がおっさんでも、若い初心者でも

自分で間違いに気づいてもらわないと、きっと理解できないから
0352名前は開発中のものです。2012/02/02(木) 11:08:57.41ID:cjhCph2c
禅問答みたい
スクリプトが咲きかコンポーネントが咲きか
はたまた
0353名前は開発中のものです。2012/02/02(木) 11:57:23.14ID:Z6MLBH4L
質問者のピントがずれてると、ずれた回答しか来ない。
そのとき、質問の仕方を変えたりすることでコミュを深めようと
する人と、 >>349 のように相手がズレてるという断定する
残念な人に分けられる。
0354名前は開発中のものです。2012/02/02(木) 12:00:00.60ID:ONbYAniM
MonoBehaviourを継承したクラスは
StartやらUpdateやらが通知されるようになりますが、
どうやってこういうクラス作るんですかね?

MonoBehaviourの代わりに自分で作成したMyBehaviourを継承させて
同じように動作するものを作ろうかと思ったんですが、
Interfaceだと実装がないとエラーになるし、
継承だとOverrideが関数の宣言にないとエラーになってしまう‥・。
0355名前は開発中のものです。2012/02/02(木) 12:03:59.36ID:8U2z1Zgt
MonoBehaviour継承しろよ...
0356名前は開発中のものです。2012/02/02(木) 12:32:54.19ID:2UCdhMnX
ゲーム中の全スクリプト共通の宣言ってどうやったらいいんでしょう?
0357名前は開発中のものです。2012/02/02(木) 12:40:05.61ID:ONbYAniM
static宣言したメンバ関数つかえばよくない?
0358名前は開発中のものです。2012/02/02(木) 12:51:00.26ID:ONbYAniM
関数じゃないや、変数か定数
0359名前は開発中のものです。2012/02/02(木) 13:28:29.78ID:w+qsRCXW
>>356
またお前かよ
何回同じ質問すれば気が済むんだよ
0360名前は開発中のものです。2012/02/02(木) 14:27:13.93ID:2UCdhMnX
>>359
初めて来ましたけど。
0361名前は開発中のものです。2012/02/02(木) 14:39:19.83ID:VNNQTs2q
>>352
禅問答とは違うと思うよ
何故後先の話だと思った?
0362名前は開発中のものです。2012/02/02(木) 14:42:32.51ID:CTsc3b1d
>>360
なんか似たような種類のやりとりが多いからじゃね

共通の宣言てより、共通で参照するオブジェクトを用意して、
それらから欲しい情報取り出すアプローチだと思う

具体的にはこのスレスクロールして過去レスを参照で
0363名前は開発中のものです。2012/02/02(木) 14:55:02.42ID:3NJQyIm0
unityって質問スレってのはないんですかね?
これライセンス的に18禁のエロゲ作っても大丈夫なんでしょうか?
0364名前は開発中のものです。2012/02/02(木) 15:00:16.57ID:3hEf+aLc
作って怒られたら引っ込めりゃいいよ
0365名前は開発中のものです。2012/02/02(木) 15:32:57.77ID:nEHR3Yv+
>>360
>>360
344:getcomponentがスクリプトを型指定しないと変更できないのが痛いな。動的に変更する事がほぼできない。
346:スクリプト型で宣言したスクリプト名でないとgetcomponentに入れられない。型を動的に作って宣言しないと参照先のスクリプトを変更できない。getcomponentにかわる機能は無いのか。
何かから派生させて、使うときにダウンキャストでいんじゃないか?

356:ゲーム中の全スクリプト共通の宣言ってどうやったらいいんでしょう?
シングルトン?

360:初めて来ましたけど。
初めまして
0366名前は開発中のものです。2012/02/02(木) 15:34:10.78ID:3NJQyIm0
>>364
ありがとうございます
0367名前は開発中のものです。2012/02/02(木) 15:44:50.97ID:uVCAF7bG
>>363
推測すると、Unityの質問より、もっと手前の質問で溢れ変えるから、
分けたところで結局いまと変わらないと思う
0368名前は開発中のものです。2012/02/02(木) 16:05:06.25ID:6BJSgBUL
>>365
ワロス
0369名前は開発中のものです。2012/02/02(木) 16:21:43.38ID:8U2z1Zgt
もっとレベルの高い話しようぜ
0370名前は開発中のものです。2012/02/02(木) 16:46:04.22ID:8U2z1Zgt
アセットの「Reimport All」って機能してないよな?
モデラー側で変更してReimportしても変更が反映されないんだが...
0371名前は開発中のものです。2012/02/02(木) 17:20:00.86ID:2UCdhMnX
>>365
>>368
またくるぜ。
getcomponentやconstの話が出たら俺だと思ってくれ。
0372名前は開発中のものです。2012/02/02(木) 18:34:07.73ID:VNNQTs2q
>>371
ゲトコン って言うコテつけろもう
0373kaabankuru2012/02/02(木) 18:46:05.79ID:SPjN05cD
てかみんなTwitterのアカをコテにすればよくね?w
0374名前は開発中のものです。2012/02/02(木) 18:58:39.17ID:ONbYAniM
実行時に自分が Androidかwebplayerかを判別する値ってどこかにないでしょうか?
0375名前は開発中のものです。2012/02/02(木) 19:11:14.35ID:nEHR3Yv+
>>374
http://unity3d.com/support/documentation/ScriptReference/Application.html
http://unity3d.com/support/documentation/Manual/Platform%20Dependent%20Compilation.html
0376名前は開発中のものです。2012/02/02(木) 19:21:19.88ID:ZPC7+cLT
チラシの裏だけど。親子関係にあるA,B,CのうちBをEmptyオブジェクトにすると
A:(0,0,0)
 |--- B:(0,0,0)
   | --C:(0,0,0)
この状態からCを(0,0,10)に並行移動すると一緒にBも移動するね! なんでやねん!
BのInspectorの表示は(0,0,0)のままだが表示位置は(0,0,5)に移動する。
どんな仕様だそれは。Unity狂ってるわ
カメラのLookAtTarget用にEmptyオブジェクトを作っていたら気がついた。

0377名前は開発中のものです。2012/02/02(木) 19:24:20.11ID:3hEf+aLc
そりゃgizmoがBの中身の中央値指してるだけじゃねーの
0378名前は開発中のものです。2012/02/02(木) 19:59:33.53ID:sZzwnrFN
狭い部屋をRigidBodyで埋めたらTerrain抜けて落ちてったワロス
0379名前は開発中のものです。2012/02/02(木) 20:09:40.84ID:ONbYAniM
>>375
やはりそれですか、、
DLL内部で使いたかったのでコンパイル時だと困るので
APIレベルのものを探していました。

とりあえず自分で用意する方法でしのいでみます。
0380名前は開発中のものです。2012/02/03(金) 03:08:06.38ID:9tMK53Z4
昔のIslandDemoっていうのあるじゃない
あれってTerrainはめちゃくちゃ広いけど、あれくらいの大きさは余裕なのか?

どれくらいの広さでレベルを分割すればいいのかわからない
できれば一つのエリアとして作りたい
0381名前は開発中のものです。2012/02/03(金) 04:00:46.61ID:GE4szUBL
素人考えだけど、Occlusion Cullingじゃ無理?
投影投影で、カメラから遠かったらfar以上がクリッピングされるし、LODで遠くのモデルもローポリになるし、

全マップのオブジェクトの計算処理も動き出すトリガとなる半径決めといて、そのColliderに入ったら動き出すとかすれば
計算処理浮かせられるだろうし、なんならシーン切り替え用って意味合いのCollider作るだけでもいけるかもしれない。
0382名前は開発中のものです。2012/02/03(金) 04:58:14.12ID:KIAmiWu2
>>370
アセットに追加したときに元ファイルのコピーがプロジェクトの中に作られて、
そのファイルを更新していかないとインポートされないってことじゃないの?
0383名前は開発中のものです。2012/02/03(金) 08:24:48.34ID:PpA5+TGi
Assetsフォルダーの中は変更したら自動で反映されるだろ
Reimportは本当に謎。何も起きない
0384名前は開発中のものです。2012/02/03(金) 08:31:10.11ID:PpA5+TGi
>>376
多分すっごい勘違いをしている
Gizmo(赤青緑の矢印)はローカル座標の原点(0,0,0)に表示される「のではない」
選択したゲームオブジェクト(複数)の真ん中に置かれる
上の例で言えばABCを選択したらAとCの中間に置かれる

まあローカル座標の原点に表示しろよとは思う
0385名前は開発中のものです。2012/02/03(金) 09:17:17.19ID:P65oJcDg
ん?グループの真ん中に表示するかどうかは選択出来るだろ
0386名前は開発中のものです。2012/02/03(金) 09:22:26.97ID:eWorxgCh
そのレベルなのかよ。
0387名前は開発中のものです。2012/02/03(金) 10:09:14.42ID:EytmeRKz
>>380
こんな方向もあるらしいよ
http://www.youtube.com/watch?v=83fNZDLwxHs
0388名前は開発中のものです。2012/02/03(金) 10:16:38.18ID:miWIZA4Q
>>383
asset server使ってる?
0389名前は開発中のものです。2012/02/03(金) 10:33:22.46ID:PpA5+TGi
>>385
え、まじ?
それは知らなかった。教えて下さい<(_ _)>
0390名前は開発中のものです。2012/02/03(金) 10:35:32.62ID:PpA5+TGi
>>388
使ってない。お金払いたくないでござる。絶対に払いたくないでござる!
0391名前は開発中のものです。2012/02/03(金) 13:17:53.41ID:b7SbgrUb
アニメーションソフトなど、無料の3次元ソフトをDAZ3D.comで公開
ttp://www.businesswire.com/news/home/20120201005840/ja/

ttp://www.daz3d.com/
DAZ StudioはPoser互換、Bryceは風景作成ソフト、Hexagonはモデル作成ツール
とのことだけど、Unityに利用できるかな?
0392名前は開発中のものです。2012/02/03(金) 15:03:48.62ID:04GMZg31
Hexagonは触ったこと無いが、Daz3Dは昔重かった印象。
俺はBlenderユーザなので特に使う理由が無かったから、インストールしまま放置
Bryceに関しては、5.5が期間限定無料公開されたとき手にいれたけど、
あれは静止画動画向けの内容で出力されるので、リアルタイムゲーム向けな内容にならないと思う

あと、背景用の自然物以外の建物とかは結局自分でモデリングして取り込む形になるのは変わらないし、
コリジョン設定も全部自分でする事になるので、Unity内蔵の地形生成と比べて、結局アドバンテージはあんまり無いと思う
0393名前は開発中のものです。2012/02/03(金) 19:09:11.54ID:k2Eav8B5
フォトショップ持ってますUnity持ってますね
Unity本も全部もってます
有料版Unityも持っています
勉強会にたくさん足運んでます

作ったゲーム、本のサンプルのシューティングゲームです
ですが改造しました

エロゲとか東方とか太鼓の達人やモンスターハンターみたいなゲーム作りたいと思います
好きなゲームはシュタインゲート
0394名前は開発中のものです。2012/02/03(金) 19:13:44.75ID:k2Eav8B5
勉強会に参加したんですが、みんなMacを持ってるようです
みんな持ってるのでMac流行ってるのかな?と思い
Mac買いましたcore-i7、imac一番高いやつです
iPhoneゲームが作れるらしいですねXCodeという結合開発環境で

Unityもインストールしてみます
みなさんMacでゲーム作れますか?
javascriptができます,javasriptの本かいました
勉強会で本を沢山薦められたので買いました
バンナム社員の方とお会いしました!そしたらバンナム本がいいよといわれたので即買いました
これはとても参考になります
勉強会に足はこびたいと思います
0395名前は開発中のものです。2012/02/03(金) 19:15:24.59ID:eWorxgCh
ゲームにこだわらずにゲームっぽいものについてどうやったら
金を取れるかを真剣に考えないと、ゲームも音楽みたいになるな。
たぶん、もう商売としては行き詰まる寸前。
0396名前は開発中のものです。2012/02/03(金) 19:18:31.43ID:k2Eav8B5
>>395
売るにはどうしたらいいのでしょうか?
なんか登録とかいりますか?
アルバイトでためたお金50万あるのでそれを使いたいと思います
バンナムでゲームプログラマしたいと思います
ポートフォリオは先ほど述べました、東方風シューティングゲームです
東方とはちょっと違います、動きの早さなど絵を変えました玉の発射など
格闘ゲームも作りたいと思います
そして自分でゲームを1本5000円とかで売りたいと思います
0397名前は開発中のものです。2012/02/03(金) 19:23:21.84ID:CYGceegX
Instantiateでプレハブをインスタンス化するときに、Hierarchyに登録してから
GameObject instance = (GameObject)Instantiate(GameObject.Find("Prefab"));
は出来るんですが、Hierarchyに登録せずにインスタンス生成する方法はありますか?
0398名前は開発中のものです。2012/02/03(金) 19:31:03.47ID:miWIZA4Q
>>396
AndroidやiPhoneアプリの値段みてから決めろ
PCやMac用でもその値段じゃ厳しいと思うぞ

MacなんざAppStoreで安売り真っ最中だし
3Dのクールなピンボールが350円とかだ
0399名前は開発中のものです。2012/02/03(金) 19:33:45.42ID:k2Eav8B5
>>398
ありがとうございます
350円ですか・・・
5000円だと厳しいですね
ちなみに、398さんはゲーム売ったりしていますか?
なんかAppstoreで売ると凄いと聞いたので
0400名前は開発中のものです。2012/02/03(金) 19:35:01.28ID:z6fc1kUA
>>397
Hierarchyに登録せずにインスタンス生成するって何?
身分証明書持って行かずに免許貰いたいって言ってるようなもんだけど
0401名前は開発中のものです。2012/02/03(金) 19:37:57.52ID:FwV75Ti0
アメリカさんかと思ったら違った
0402JohnSmith2012/02/03(金) 19:46:15.10ID:HVOT751V
わたしわ かんじお よめないので ほん-やく になったのお
めているから せいかくにわ わからないけど
Script で ごんに つかうと あやつられる

GameObject instance = Instantiate(Resources.Load("something"));

"something" わ Resources と いう Folderお つくって その
なかに はいって いるべきです
でも ごれわ memoryの けいさんが まえの ことより おおい
けってんが あります

しらないのが あれべ UnityScriptReferenceで
がんだんに めつけるんです

0403名前は開発中のものです。2012/02/03(金) 19:52:32.71ID:CYGceegX
>>400
無理なのか……d
んじゃプレハブで弾とか作る場合は一個その辺に置いとくわけね
0404名前は開発中のものです。2012/02/03(金) 19:55:26.74ID:z6fc1kUA
>>403
あ、スマン。勘違いしてた
ProjectビューにあればOKだよ Transformの参照にドラッグ&ドロップでプレハブ登録すればよし
0405JohnSmith2012/02/03(金) 20:02:55.73ID:HVOT751V
にほんで Unity3D の Communityが いますか?

いるなら おしえて くでさい
0406名前は開発中のものです。2012/02/03(金) 20:28:07.66ID:R93hK/U0
日系アメリカ人の嫌がらせかとオモタw

0407名前は開発中のものです。2012/02/03(金) 20:40:53.21ID:CYGceegX
荒らしかと思ってスルーしてたら俺へのレスだった

>>402
thanks 4 ur reply
I'll try

>>404
そのD&Dをスクリプト内から動的にやりたかったんだ
ていうかResourcesに放り込むのがUnityの流儀なのか
0408名前は開発中のものです。2012/02/03(金) 20:49:37.25ID:k2Eav8B5
毒をビチャビチャまきちらす 口から猛毒をスプレーのように吐く
森の中をカモフラージュしながら徘徊する
口から視界を得られるトラップを仕掛ける
獲物は苦しみながら死に絶える 体から強烈な猛毒を噴出する
そのなもSlither
0409名前は開発中のものです。2012/02/03(金) 20:52:46.58ID:PpA5+TGi
俺はエディターでPrefabの参照をドラッグ&ドロップしてる
通常これからInstantiate()するPrefabは決められるはずだ

最初Instantiate()に渡す変数の型がさっぱり謎だったんだが
GameObjectではなくスクリプト名を書いておいて
エディターでPrefabを突っ込めばいけた。


0410名前は開発中のものです。2012/02/03(金) 21:00:58.20ID:PpA5+TGi
せっかくだからフリーダウンロード中のDAZ Studio(Pro)を使ってみた。
ProはFBXエクスポーターが使えて問題なくUnityに取り込めた。
Colladaエクスポーターも使えるがバグってるのでUnityに取り込みは無理だった。
1点だけ注意。aniMate2(という標準的なアドオン)で作ったデータはエクスポート前に「Bake To Sdutio keyframes」が必要。

使ってみた感想はキャラクターに手っ取り早くモーションを付けてUnityに取り込むにはわりといい。
アニメーションが複数クリップを取り扱えないのでインポート時にSplitが必要。
元々がPoser互換ソフトなのでアニメーションはちと弱い。
aniMate2はもっとアニメーションクリップがあれば使えるけど現状では力不足

一番ありがたかったのはカーネギーメロン大学の”DAZ friendly"なフリーのモーションキャプチャーデータがそのまま使えたこと。
https://sites.google.com/a/cgspeed.com/cgspeed/motion-capture




0411名前は開発中のものです。2012/02/03(金) 21:06:26.54ID:XXxbj4sl
初歩的なことで申し訳ないが教えて欲しい
下記のページを読んでカメラの動きについて勉強していた

http://unity.gameenginejp.com/2010/12/4.html

var q = Quaternion.AngleAxis(45,Vector3.right);
↑X軸に対して45度の傾きを取った、これは分かる

transform.rotation = q;
↑qを代入してカメラの角度を45度に固定した、これも分かる

public float Distance = 10.0f;
↑上記の変数でカメラとターゲットの距離を変えられるようにした、これも分かる

this.Direction = q * -Vector3.forward;
↑ここでなぜ「-Vector3.forward」が出てくるのか分からない
代入結果は45度からz軸と反対方向に進んだ位置という理解でいいだろうか?
それとも(0,0,45)-(0,0,1)で(0,0,44)としたいのか?
なぜ「-」とするのかも分からない(試しに+にしたら視界がぶっ飛んだ)
試しにthis.Direction = q;としたらエラーに成ったのも理解できなかった(Directionが座標で、qが傾きだから?)

transform.position = this.Player.transform.position + this.Direction*Distance;
↑ターゲットの位置に変数を足して、カメラの位置を出した、これは分かる

3Dの移動処理がよく分からんです(´・ω・`)
0412名前は開発中のものです。2012/02/03(金) 21:21:29.74ID:VxnT9p6E
>>411
逆向きのベクトルをクォータニオンで回転させてる
その回転後のベクトルを、Directionとしてセットしてる
クォータニオンや行列は、それ自体数学的な意味での関数と思っていい
値でなく、f
0413名前は開発中のものです。2012/02/03(金) 21:32:50.19ID:nVgaabe2
もうちょっと言うと、AngleAxisは45度の傾きを取った、んでなくて
ある軸に対して45度の傾きを実現させるための数学的な意味での関数を得る、だけ

なので、それを利用して何かを回転させ、その結果を得たい

もとの数学的なその関数は、引数に与えた軸に対して、引数に与えた角度の回転を表す
それを、あるベクトルを対して適用すれば、そのベクトルがその関数によって回転したあとの状態になる

考え方はそんな感じ。多分捉え方が違う

クォータニオンは基本的に、自由なあるベクトルを軸として回転させる、その計算に使うもの
0414名前は開発中のものです。2012/02/03(金) 21:32:54.30ID:gdEK9pld
もうちょっと言うと、AngleAxisは45度の傾きを取った、んでなくて
ある軸に対して45度の傾きを実現させるための数学的な意味での関数を得る、だけ

なので、それを利用して何かを回転させ、その結果を得たい

もとの数学的なその関数は、引数に与えた軸に対して、引数に与えた角度の回転を表す
それを、あるベクトルを対して適用すれば、そのベクトルがその関数によって回転したあとの状態になる

考え方はそんな感じ。多分捉え方が違う

クォータニオンは基本的に、自由なあるベクトルを軸として回転させる、その計算に使うもの
0415名前は開発中のものです。2012/02/03(金) 21:33:09.86ID:XXxbj4sl
>>412
ありがとうございます

逆向きのベクトルを回転させているということは
this.Direction = q * -Vector3.forward;

Quaternion.AngleAxis(-45,Vector3.forward);
と同じと考えていいですか?
でもthis.Direction(座標)とq(傾き)は型が違うってことはそれは違いますね

|  q
|/
| ̄ ̄

を逆向きにするということは

  |
_|_
/|
q

なったということですか
物分り悪くてすみません
0416名前は開発中のものです。2012/02/03(金) 21:33:53.86ID:XXxbj4sl
すみません、追記分今から読みます
0417名前は開発中のものです。2012/02/03(金) 21:40:02.84ID:eWorxgCh
なんだか今日のこのスレはすごいな。
0418名前は開発中のものです。2012/02/03(金) 21:46:38.32ID:Qh5gfQqO
テクニカルなこと話してる人と
「ぼくのかんがえたげーむ」語りだすキチガイが混じって実にカオスwwww
0419名前は開発中のものです。2012/02/03(金) 21:47:19.82ID:k2Eav8B5
毒をビチャビチャまきちらす 口から猛毒をスプレーのように吐く
森の中をカモフラージュしながら徘徊する
口から視界を得られるトラップを仕掛ける
獲物は苦しみながら死に絶える 体から強烈な猛毒を噴出する
そのなもSlither
0420名前は開発中のものです。2012/02/03(金) 21:50:15.17ID:XXxbj4sl
>>413
qには45度の傾きを実現させるための数値を入れた
transform.rotation = q;で実行してオブジェクトをX軸に対して45度、傾かせた
ここまで分かりました

this.Direction = q * -Vector3.forward;
で、z軸に対して「X軸に対して45度に傾かせる数値」をかけて逆さまにしたってことになるのでしょうか?

あれか、数学の理解が足りないのか(´・ω・`)
0421名前は開発中のものです。2012/02/03(金) 21:54:37.93ID:+oF89WrW
>>416
ちなみにさらに補足すると、クォータニオンは立場として、ベクトルやスカラでなく、行列の側のもの。
「何度の回転」と言う言葉は暗黙のうちに、「何の軸で」が隠されている。

単純なxyzの三軸を考える時、それぞれの軸について、それらを中心に回転させるだけなら簡単だが、
「任意のベクトルを軸にして」となると途端に複雑になるうえ、
それぞれオイラー角を順番掛け合わせても、正しく回転できなくなる角度がある(ジンバルロック)

クォータニオンは行列での単純かけあわせでなく、ある軸におけるネジ方向の回転を得る数学的な意味での関数オブジェクト

より詳細はぐぐってくれ。移動中にスマホで各のはつらい
0422名前は開発中のものです。2012/02/03(金) 21:56:17.71ID:PpA5+TGi
Quaternion.AngleAxis(45,Vector3.forward); ==> (0,0,1)軸の周りに45度回転を表すクオータニオン
Quaternion.AngleAxis(45,-Vector3.forward); ==> (0,0,-1)軸の周りに45度回転を表すクオータニオン
Quaternion.AngleAxis(-45,Vector3.forward); ==> (0,0,1)軸の周りに-45度回転を表すクオータニオン
Vector3 a, b;
Quaternion q;
とすれば、
b = q * a;
ベクトルaをqのクオータニオンで回転したのがベクトルb
0423名前は開発中のものです。2012/02/03(金) 22:00:47.88ID:6DLGQUri
>>420
Directionにセットしているのは、その上で出ているベクトルと全く関係ない、新しいベクトル

先に作成した回転関数を使って、新しいベクトルを回転させ、それを代入しているのだ

数学は慣れだぜ
0424名前は開発中のものです。2012/02/03(金) 22:01:13.48ID:PpA5+TGi
transform.rotation = q;
this.Direction = q * -Vector3.forward;

リンク先をまったく見てないけど。
カメラはローカル座標で(0,0,1)方向を向いているのがUnityの鉄則
これはカメラとは正反対の方向(0,0,-1)をワールド座標に変換(q)してDirectionに格納している。
カメラの後ろ方向を保存しておいて後で何か必要になるんでしょ

0425名前は開発中のものです。2012/02/03(金) 22:07:13.44ID:Q6CK7I7v
あ、大事なこと忘れた。
クォータニオンは、そんなわけで「何の軸での回転なのか」だから、生まれるには必ず軸を表す正規化(ノーマライズ)されたベクトルが必要。

最初に渡してるベクトルはそれ。

次に掛けてるベクトルは、クォータニオンに変化させてもらいたいベクトル。
両者はまったく別の立場
0426名前は開発中のものです。2012/02/03(金) 22:24:02.37ID:XXxbj4sl
>>421-425
ぬおおおお
すみません、ありがとうございます

分かって来ました
カメラはターゲットをX軸から45度の角度で見下ろすことを目的としている一方で
「Vector3.forward」だとターゲットの視点から正面方向(z方向)の力を持ったベクトルを取ってしまうため、
「-Vector3.forward」でターゲットの背中方向(正面の反対)に力を持ったベクトルを取った
そのベクトルを回転させた上で、
ベクトルの力の方向に、離れた場所でカメラを設置したんですな
最後のtransform.positionを決めるにはベクトルの方向がターゲットの視点と反対でないといけなかったというわけか

ベクトルとクォータニオンの使い方が分かって来ました
ありがとうございました(`・ω・´)
■ このスレッドは過去ログ倉庫に格納されています