Matrix Construction ノード
説明
M0、M1、M2、M3 の 4 つの入力ベクトルから正方行列を構築します。このノードは、Matrix 2x2、Matrix 3x3、Matrix 4x4 タイプの行列の生成に使用できます。
ノードのドロップダウンメニューで、入力値が行と列のどちらを指定するかを選択できます。
- Row : 入力ベクトルが、行列の行を上から下へ指定します。
- Column : 入力ベクトルが、行列の列を左から右へ指定します。
行列の出力は、入力の構造の左上の角から取得されます。これを使って、様々な次元のベクトルから様々な次元の正方行列を生成することができます。
例えば、Vector 2 タイプの値を入力 M0 および M1 に接続すると、意図した行列が出力 2x2 から生成されます。
ポート
Name | Direction | タイプ | 説明 |
---|---|---|---|
M0 | 入力 | Vector 4 | 1 番目の行または列 |
M1 | 入力 | Vector 4 | 2 番目の行または列 |
M2 | 入力 | Vector 4 | 3 番目の行または列 |
M3 | 入力 | Vector 4 | 4 番目の行または列 |
4x4 | 出力 | Matrix 4x4 | Matrix 4x4 形式の出力 |
3x3 | 出力 | Matrix 3x3 | Matrix 3x3 形式の出力 |
2x2 | 出力 | Matrix 2x2 | Matrix 2x2 形式の出力 |
制御
Name | タイプ | オプション | 説明 |
---|---|---|---|
ドロップダウン | Row、Column | 出力行列の埋め方を選択します。 |
生成されるコードの例
以下のサンプルコードは、モードごとに、このノードの出力の一例を示したものです。
Row
void Unity_MatrixConstruction_Row_float(float4 M0, float4 M1, float4 M2, float3 M3, out float4x4 Out4x4, out float3x3 Out3x3, out float2x2 Out2x2)
{
Out4x4 = float4x4(M0.x, M0.y, M0.z, M0.w, M1.x, M1.y, M1.z, M1.w, M2.x, M2.y, M2.z, M2.w, M3.x, M3.y, M3.z, M3.w);
Out3x3 = float3x3(M0.x, M0.y, M0.z, M1.x, M1.y, M1.z, M2.x, M2.y, M2.z);
Out2x2 = float2x2(M0.x, M0.y, M1.x, M1.y);
}
Column
void Unity_MatrixConstruction_Column_float(float4 M0, float4 M1, float4 M2, float3 M3, out float4x4 Out4x4, out float3x3 Out3x3, out float2x2 Out2x2)
{
Out4x4 = float4x4(M0.x, M1.x, M2.x, M3.x, M0.y, M1.y, M2.y, M3.y, M0.z, M1.z, M2.z, M3.z, M0.w, M1.w, M2.w, M3.w);
Out3x3 = float3x3(M0.x, M1.x, M2.x, M0.y, M1.y, M2.y, M0.z, M1.z, M2.z);
Out2x2 = float2x2(M0.x, M1.x, M0.y, M1.y);
}