[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
849(1): 2017/12/13(水)23:01 ID:/jokcbje(6/6) AAS
>>847
Unity自体はそれほど詳しくないですが、
物理演算系とか、3D数学が専門なので。
850(1): 2017/12/13(水)23:04 ID:bbkFRctl(1) AAS
神になった気分だ。
スキルアップした今、どんなジャンルの仮想世界を作れと言われても
その詳細さえ教えてもらえれば
一瞬でどんなデータ構造/アルゴリズムで作ればいいかや
どんなデザインパターンを使えばいいかが
一瞬で頭にひらめき、スラスラとコードを書きはじめることができ、
予期せぬバグとかがなければ短期間でそのソフトやツールを一人で作る自信がある。
この予期せぬバグとはふだん使ってない昔やったプログラミング言語の細かい文法関連のことだけで
それはすぐ見直してカンを取り戻せばいいから全く問題ない。
851: 2017/12/13(水)23:09 ID:Kxr7McTA(2/3) AAS
>>850
いいから、お前は早く作れ!w
852(1): 2017/12/13(水)23:11 ID:Kxr7McTA(3/3) AAS
>>849
専門?3d系プログラマ?
853(1): 2017/12/13(水)23:36 ID:fbUZmcUU(1) AAS
transform.lossyscale.x = transform.parent.locssyScale.x * transform.localscale.x
じゃないのか?
854: 2017/12/14(木)00:23 ID:AuQKwcV0(1/7) AAS
>>853
そうですね。
parentがrootとは限らないので、parentのlossyscaleじゃないとダメですね。
末枝側へ変換が累積していきますから。
親オブジェクト-子オブジェクトの2者関係だと、
親オブジェクトのlossyscale = localscaleなので、両方localscaleで大丈夫ですけど。
親オブジェクト-子オブジェクト-孫オブジェクトの3者関係だと、
孫オブジェクトの親オブジェクトである子オブジェクトのlossyscaleは、
親オブジェクトのlocalscale * 子オブジェクトのlocalscaleになってますから、
孫オブジェクトのlossyscale
= 子オブジェクトのlossyscale * 孫オブジェクトのlocalscale
= (親オブジェクトのlossyscale * 子オブジェクトのlocalscale) * 孫オブジェクトのlocalscale
= 親オブジェクトのlocalscale * 子オブジェクトのlocalscale * 孫オブジェクトのlocalscale
>>852
仕事じゃなくて学問の方で。
うっかりしてましたが、UnityはCamelCaseだから、localScale,lossyScaleが正しいのでしたね。
855: 2017/12/14(木)00:33 ID:AuQKwcV0(2/7) AAS
Scaleの積は、Vector3の各成分とVector3の各成分の積なので、
Vector3 * Vevtor3 は定義されていないから、
Vector3.Scale(Vector3, Vevtor3) という演算ですね。
いわゆる、アダマール積(シューア積,要素積)です。
Unityでは、アダマール積の逆関数が定義されていないので、
自分でVector3.Scaleの逆関数を定義するか、
アダマール積の逆数を自分で定義する必要がありますね。
856: 2017/12/14(木)02:05 ID:tWpTkhe5(1) AAS
Vuforiaを使ってAR作りたいのですが実行するとマーカーは認識するもののカメラの映像が映らずに画面が黒くなります
誰か分かる方いらっしゃいますか...?
857(1): 2017/12/14(木)08:31 ID:fpuqjDVR(1) AAS
専門ってのは専門学校の事だろw
858(3): 2017/12/14(木)08:46 ID:xj1b5N68(1) AAS
>>857
専門学校出身だったら行列の回転だとかをQuaternionとかでも適用して使えるんだろなー
という煽りレス
859(1): 2017/12/14(木)11:08 ID:X1xy6sbZ(1) AAS
plus一ヶ月契約でもエッセンシャルパック2つってもらえますか?
あるいは契約し続けないと使えなくなる感じかな
860(1): 2017/12/14(木)12:22 ID:JR7j67YV(1/2) AAS
>>858
Unityって、もともと回転行列じゃなくて、クォータニオンで回転しているんじゃないの??
861(1): 2017/12/14(木)13:13 ID:6Eg6sRVA(1) AAS
>>860
Matrix4x4というのがあってね...
でも正直に言おう アレは何だ?!
862(1): 2017/12/14(木)15:25 ID:UIHENBZT(1) AAS
数学難しいですね
でも大丈夫!UNITYにはアセットが有りますよ!
アセットを購入しましょう!
863: 2017/12/14(木)17:52 ID:V0Mq7RkO(1) AAS
>>862
お前ニセモノだな!
864(1): 2017/12/14(木)19:01 ID:EAIFpwQr(1) AAS
>>859
契約切れても有効だけどそもそもplus/pro自体12ヶ月継続必須だから前提が無理
865(1): 2017/12/14(木)19:21 ID:JR7j67YV(2/2) AAS
>>861
3次元のベクトルを回転させるのに、なんで4x4行列なの?
回転行列って、3x3行列じゃないの??
866(1): 2017/12/14(木)20:39 ID:AuQKwcV0(3/7) AAS
>>865
移動と回転とスケーリングができるように、
アフィン変換行列になっているからです。
Matrix4x4.TRS(position, rotation, scale)
で4×4行列に入力できますが、
出力する時は、
Vector3 = Matrix4x4.MultiplyVector(Vector3)
によって、Vector3で入力して、
Vector3で出力できるようになっています。
867: 2017/12/14(木)20:55 ID:N8/aZDnG(1/2) AAS
>>866
はえ〜すっごい‥
868: 2017/12/14(木)21:30 ID:AuQKwcV0(4/7) AAS
>>858
回転行列MでベクトルV0を回転させて、ベクトルVにするには、
Z軸で30度回転する場合は、
Quaternion Q = Quaternion.Euler (0, 0, 30);
Matrix4x4 M = Matrix4x4.TRS (Vector2.zero, Q, Vector2.one);
Vector3 V0 = new Vector3(1, 2, 3);
Vector3 V = M.MultiplyVector (V0);
これを、QuaternionとVector3の演算で行うと、
Quaternion Q = Quaternion.Euler (0, 0, 30);
Vector3 V0 = new Vector3(1, 2, 3);
Vector3 V = Q * V0;
869: 2017/12/14(木)21:32 ID:AuQKwcV0(5/7) AAS
Matrix4x4 M = Matrix4x4.TRS (Vector2.zero, Q, Vector2.one);
は間違いで、
Matrix4x4 M = Matrix4x4.TRS (Vector3.zero, Q, Vector3.one);
が正しいです。
870(1): 2017/12/14(木)21:45 ID:AuQKwcV0(6/7) AAS
>>858
Quaternion QでベクトルV0を回転させて、ベクトルVにするには、
Z軸で30度回転する場合は、
Quaternion Q = Quaternion.Euler (0, 0, 30);
Vector3 V0 = new Vector3(1, 2, 3);
Quaternion Qv0 = Quaternion.identity;
Qv0.Set(V0.x, V0.y, V0.z, 0);
Quaternion Qv = Q * Qv0 * Quaternion.Inverse (Q);
Vector3 V = new Vector3(Qv.x, Qv.y, Qv.z);
こちらが、本来のQuaternion積でベクトルを回転させる方法です。
Unityでは、この面倒くさいQuaternion積の演算が、
「Quaternion * Vector3」だけでできるようになっています。
871: 2017/12/14(木)21:55 ID:AuQKwcV0(7/7) AAS
Vector3 = Quaternion * Vector3
は、行列積を意識していると思われます。
Vector3 = Matrix3x3 * Vector3
としたいところですが、
UnityにはMatrix3x3は用意されていません。
(3×3行列の乗算では、回転とスケーリングしかできないからです)
Vector4 = new Vector4(Vector3, 1) で4次元ベクトルにしてから、
Vector4 = Matrix4x4 * Vector4 で計算して、
Vector3 = (Vector3)Vector4 で3次元ベクトルへ戻す必要があります。
最初に、Vector4 = (Vector4)Vector3 と手抜きをしてはいけません。
Vector4 = new Vector4(Vector3, 0) で代入されると、
アフィン変換の「移動」が乗算されなくなります。
872: 2017/12/14(木)23:49 ID:zts/k6NY(1) AAS
行列なんか意識しないでも3dゲーム作れるようになったんだからすごい時代だよね
結構まえからだけど
873: 2017/12/14(木)23:54 ID:N8/aZDnG(2/2) AAS
>>870
へー、なるほどなぁ‥
874(1): 2017/12/15(金)01:39 ID:TM1zyrgU(1) AAS
>>864
年契約の1ヶ月払いってだけなんですね
ありがとうございます
875: 2017/12/15(金)04:19 ID:L6b+QAfA(1) AAS
なるほど よくわからん
876: 2017/12/15(金)11:35 ID:a5awPS/6(1) AAS
>>874
半額だったんでplusを年契約の年払いしたよ
売り上げ1千万以上なのに。
たかだか1万円ぐらいを月払いする奴いるの?
877(1): 2017/12/15(金)12:38 ID:c63jfGrC(1/2) AAS
物理演算系の解説を希望!
C#の経験あっても、そもそも物理演算は別物な気がする・・・
物理演算は、2Dと3Dで若干仕様が違うし、なかなか体系的に物理演算を解説しているサイトも少ない
せいぜい、velocityとAddForce止まりが多い
重力設定や衝突判定をUnityにまかせてしまうには、物理演算を使用するのが手っ取り早いんだけど、
物理演算だと、これまでのグラフィックス操作的な、プログラミングメソッドがあまり使えない
(基本的に、positionやrotationを直接いじらないほうが良いみたい)
878(3): 2017/12/15(金)12:46 ID:bN2Y1bPS(1) AAS
アイテムを所持していればお化けを倒せるというシステムにしようと思っています。
それでそのアイテムを十字架の画像にしようと思っているのですが、日本人だったらアイコン見ただけで何となく意味が分かるだろうと思うのですが、海外の人でも抵抗なくスッと理解されるんでしょうか?
上下前次1-新書関写板覧索設栞歴
あと 124 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.013s