この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
vci:script:reference:quaternion [2021/06/17 19:28] t-daihisa [メソッド一覧] |
vci:script:reference:quaternion [2023/06/01 11:12] (現在) pastatto リファレンスページの注意書き追加 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ~~NOTOC~~ | ||
====== Quaternion ====== | ====== Quaternion ====== | ||
+ | <WRAP center round important 80%> | ||
+ | |||
+ | このページは過去の情報となります。\\ | ||
+ | 新しいスクリプトリファレンスは**[[https://developer.virtualcast.jp/vci-docs/api/|こちら]]**になります。 | ||
+ | </WRAP> | ||
QuaternionはX,Y,Z,Wの4つの値を持ったクラスです。\\ | QuaternionはX,Y,Z,Wの4つの値を持ったクラスです。\\ | ||
回転を表現するクラスですが、値を直接指定してQuaternionを直接変化させる事はありません。\\ | 回転を表現するクラスですが、値を直接指定してQuaternionを直接変化させる事はありません。\\ | ||
- | 基本的に、変化させたい場合は下記にあげるメソッドを使用して変化させます。 | + | 基本的に、変化させたい場合は下記にあげる関数を使用して変化させます。 |
- | + | ||
- | ===== メソッド一覧 ===== | + | |
- | + | ||
- | **メソッド一覧は[EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと最新のメソッド一覧を確認できます。**\\ | + | |
- | **表記の省略の為、''Vector3型'' は ''Vec3''、''number型'' は ''num'' と表記してあります。**\\ | + | |
- | **引数は ''()'' の中に、戻り値の型は '':(セミコロン)'' の後に表記してあります。**\\ | + | |
- | + | ||
- | ---- | + | |
- | ^ メソッド名 ^ 説明 ^ | + | ^ 名前 ^ 説明 ^ バージョン ^ |
- | | [[vci/script/reference/quaternion#初期化について | _new fun(x: num, y: num, z: num, w: num): Quaternion ]] | 初期化 | | + | | [[vci/script/reference/quaternion#初期化について | _new ]] | 初期化 | |
- | | [[vci/script/reference/quaternion#fromtorotation | FromToRotation fun(fromDirection: Vec3, toDirection: Vec3): Quaternion ]] | fromDirectionの方向から、toDirectionの方向へ回転します。 | | + | | [[vci/script/reference/quaternion#FromToRotation ]] | fromDirection→toDirectionへ回転 | |
- | | [[vci/script/reference/quaternion#inverse | Inverse fun(rotation: Quaternion): Quaternion ]] | rotationと逆のQuaternionを作成します。 | | + | | [[vci/script/reference/quaternion#Inverse ]] | rotationと逆のQuaternionを作成 | |
- | | [[vci/script/reference/quaternion#slerp | Slerp fun(a: Quaternion, b: Quaternion, t: num): Quaternion ]] | a と b の間を t で球面補間します。t は[0, 1]の範囲です。 | | + | | [[vci/script/reference/quaternion#Slerp ]] | a と b の間を t で球面補間 [0≦t≦1] | |
- | | [[vci/script/reference/quaternion#slerpunclamped | SlerpUnclamped fun(a: Quaternion, b: Quaternion, t: num): Quaternion ]] | Slerpと同じですが、t の値を[0, 1]に制限しません。バネ等に使います。 | | + | | [[vci/script/reference/quaternion#SlerpUnclamped]] | t の値を制限しないSlerp | |
- | | [[vci/script/reference/quaternion#lerp | Lerp fun(a: Quaternion, b: Quaternion, t: num): Quaternion ]] | a と b の間を t で線形補間します。t は[0, 1]の範囲です。 | | + | | [[vci/script/reference/quaternion#Lerp ]] | a と b の間を t で線形補間 [0≦t≦1](バネ) | |
- | | [[vci/script/reference/quaternion#lerpunclamped | LerpUnclamped fun(a: Quaternion, b: Quaternion, t: num): Quaternion ]] | Lerpと同じですが、t の値を[0, 1]に制限しません。バネ等に使います。 | | + | | [[vci/script/reference/quaternion#LerpUnclamped ]] | t の値を制限しないSlerp(バネ) | |
- | | [[vci/script/reference/quaternion#angleaxis | AngleAxis fun(angle: num, axis: Vec3): Quaternion ]] | axisのベクトルを軸にして、angle度回転する回転を作成 | | + | | [[vci/script/reference/quaternion#AngleAxis ]] | Axisのベクトルを軸にAngle度回転 | |
- | | [[vci/script/reference/quaternion#lookrotation | LookRotation fun(forward: Vec3, upwards: Vec3): Quaternion ]] | 前方向のforwardと、上方向のupwardsに対応する方向に向きます。 | | + | | [[vci/script/reference/quaternion#LookRotation ]] | forwardとupwardsに対応する方向に設定 | |
- | | [[vci/script/reference/quaternion#dot | Dot fun(a: Quaternion, b: Quaternion): num ]] | 2の回転 a と b の内積を返します。 | | + | | [[vci/script/reference/quaternion#Dot ]] | 2の回転 a と b の内積を返す | |
- | | [[vci/script/reference/quaternion#angle | Angle fun(a: Quaternion, b: Quaternion): num ]] | 2つの回転 a と b の角度を返します。 | | + | | [[vci/script/reference/quaternion#Angle ]] | 2つの回転 a と b の角度を返す | |
- | | [[vci/script/reference/quaternion#euler | Euler fun(x: num, y: num, z: num): Quaternion ]] | オイラー角で指定してQuaternionを作成します。 | | + | | [[vci/script/reference/quaternion#Euler ]] | オイラー角でQuaternionを作成 | |
- | | [[vci/script/reference/quaternion#toangleaxis | ToAngleAxis fun(angle: usertype, axis: usertype) ]] | ※現在使用することが出来ません。回転を座標に対する角度の値 (AngleAxis) に変換します。 | | + | | [[vci/script/reference/quaternion#ToAngleAxis(使用不可) ]] | 回転を座標に対する角度の値 (AngleAxis) に変換 | |
- | | [[vci/script/reference/quaternion#rotatetowards | RotateTowards fun(from: Quaternion, to: Quaternion, maxDegreesDelta: num): Quaternion ]] | 2つのQuaternion間の最大となる回転を補間します。 | | + | | [[vci/script/reference/quaternion#RotateTowards ]] | 2つのQuaternion間の最大となる回転を補間 | |
- | | [[vci/script/reference/quaternion#normalize | Normalize fun(q: Quaternion): Quaternion ]] | qのノルムを1にし、単位Quaternionを返します。引数なしで四元数quatのメソッドとして使った場合(例:quat.Normalize())、オブジェクト側(quat)の値の変更がなされます。 | | + | | [[vci/script/reference/quaternion#Normalize ]] | qのノルムを1にし、単位Quaternionを返す | |
- | | GetHashCode fun(): num | 使用しません。 | | + | | GetHashCode | 使用しない | |
- | | [[vci/script/reference/quaternion#tostring | ToString fun(): string ]] | 文字列に変換します | | + | | [[vci/script/reference/quaternion#ToString ]] | 文字列に変換 | |
- | | [[vci/script/reference/quaternion#toeuler | ToEuler fun(): Vec3 ]] | ToEuler()は非推奨です。オイラー角に変換する場合は'eulerAngles'が推奨されます。単位はラジアンで返します。 | | + | | [[vci/script/reference/quaternion#ToEuler(非推奨) ]] | オイラー角に変換する場合は'eulerAngles'が推奨 | |
- | | [[vci/script/reference/quaternion#toeulerangles | ToEulerAngles fun(): Vec3 ]] | ToEuler()と同じくToEulerAngles()は非推奨です。オイラー角に変換する場合は'eulerAngles'が推奨されます。単位はToEuler()と同じくラジアンで返します。 | | + | | [[vci/script/reference/quaternion#ToEulerAngles(非推奨) ]] | オイラー角に変換する場合は'eulerAngles'が推奨 | |
- | | [[vci/script/reference/quaternion#identity | identity Quaternion ]] | (0.0, 0.0, 0.0, 1.0)の基準となるQuaternionを作成します。 | | + | | [[vci/script/reference/quaternion#identity ]] | (0, 0, 0, 1)の基準となるQuaternionを作成 | |
- | | [[vci/script/reference/quaternion#eulerangles | eulerAngles Vec3 ]] | 回転をオイラー角の値で返します。 | | + | | [[vci/script/reference/quaternion#eulerAngles ]] | 回転をオイラー角の値で返す | |
- | | [[vci/script/reference/quaternion#normalized | normalized Quaternion ]] | 単位Quaternionを返します。値の変更はされません。 | | + | | [[vci/script/reference/quaternion#normalized]] | 単位Quaternionを返す | |
- | | x num | 基本的に直接Quaternionを変更しません | | + | | x num | ※基本的に直接Quaternionを変更しない | |
- | | y num | 基本的に直接Quaternionを変更しません | | + | | y num | ::: | |
- | | z num | 基本的に直接Quaternionを変更しません | | + | | z num | ::: | |
- | | w num | 基本的に直接Quaternionを変更しません | | + | | w num | ::: | |
| kEpsilon num | | | | kEpsilon num | | | ||
ライン 56: | ライン 54: | ||
基本的に''Quaternion.identity''でQuaternionを初期化します。\\ | 基本的に''Quaternion.identity''でQuaternionを初期化します。\\ | ||
''__new()''でも宣言可能ですが、Quaternionを直接扱う事は少ないです。\\ | ''__new()''でも宣言可能ですが、Quaternionを直接扱う事は少ないです。\\ | ||
- | また、上記のサンプルでは''rotate.x = 1''とする事で、各要素に対して直接アクセス可能ですが、Quaternionを操作する際は用意されたメソッドを使い操作する事を推奨します。\\ | + | また、上記のサンプルでは''rotate.x = 1''とする事で、各要素に対して直接アクセス可能ですが、Quaternionを操作する際は用意された関数を使い操作する事を推奨します。\\ |
サンプル\\ | サンプル\\ | ||
ライン 72: | ライン 70: | ||
実行結果\\ | 実行結果\\ | ||
<code lua> | <code lua> | ||
- | (VCIを掴んだ状態から離すと、回転(Rotation)が初期状態(x = 0, y = 0, z = 0)になります。) | + | (VCIをつかんだ状態から離すと、回転(Rotation)が初期状態(x = 0, y = 0, z = 0)になります。) |
</code> | </code> | ||
ライン 78: | ライン 76: | ||
その際は、姿勢を変更した後に''SetVelocity()''を0にする事で、rigidbodyによる姿勢の更新を防ぎます。 | その際は、姿勢を変更した後に''SetVelocity()''を0にする事で、rigidbodyによる姿勢の更新を防ぎます。 | ||
- | ===== FromToRotation() ===== | + | ===== FromToRotation ===== |
+ | **FromToRotation fun(fromDirection: Vec3, toDirection: Vec3): Quaternion**\\ | ||
+ | 2つのベクトルの差分をQuaternionで返します。 | ||
- | **FromToRotation fun(fromDirection: Vec3, toDirection: Vec3): Quaternion** | + | === サンプル === |
- | + | ||
- | サンプル\\ | + | |
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 98: | ライン 96: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
Subitemの上面(up)が常にSubitem2の方向を向きます。 | Subitemの上面(up)が常にSubitem2の方向を向きます。 | ||
ライン 104: | ライン 102: | ||
</code> | </code> | ||
- | 説明\\ | ||
- | Quaternion.FromToRotationは、2つのベクトルの差分をQuaternionで返します。 | ||
- | ===== Inverse() ===== | ||
- | **Inverse fun(rotation: Quaternion): Quaternion** | ||
- | サンプル\\ | + | ===== Inverse ===== |
+ | **Inverse fun(rotation: Quaternion): Quaternion**\\ | ||
+ | 逆のQuaternionを作成します。 | ||
+ | |||
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 121: | ライン 119: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
Subitemが常にSubitem2と逆に回転します。 | Subitemが常にSubitem2と逆に回転します。 | ||
</code> | </code> | ||
- | 説明\\ | ||
- | Quaternion.Inverseは、逆のQuaternionを作成します。 | ||
- | |||
- | ===== Slerp() ===== | ||
- | **Slerp fun(a: Quaternion, b: Quaternion, t: num): Quaternion** | + | ===== Slerp ===== |
+ | **Slerp fun(a: Quaternion, b: Quaternion, t: num): Quaternion**\\ | ||
+ | 第一引数 と 第二引数 の間を 第三引数の値 で球面補間します。\\ | ||
+ | 第三引数の値 は[0, 1]の範囲です。 | ||
- | サンプル1\\ | + | === サンプル1 === |
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 146: | ライン 143: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果1 === |
<code lua> | <code lua> | ||
Subitemが(0,0,0,1)からSubitem2の角度へ球面補間を行って往復回転します。 | Subitemが(0,0,0,1)からSubitem2の角度へ球面補間を行って往復回転します。 | ||
</code> | </code> | ||
- | サンプル2\\ | + | \\ |
+ | |||
+ | |||
+ | === サンプル2 === | ||
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 161: | ライン 161: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果2 === |
<code lua> | <code lua> | ||
SubitemがSubitem2の角度へゆっくり回転します。 | SubitemがSubitem2の角度へゆっくり回転します。 | ||
</code> | </code> | ||
- | 説明\\ | ||
- | Quaternion.Slerpは、第一引数 と 第二引数 の間を 第三引数の値 で球面補間します。第三引数の値 は[0, 1]の範囲です。 | ||
- | ===== SlerpUnclamped() ===== | ||
- | **SlerpUnclamped fun(a: Quaternion, b: Quaternion, t: num): Quaternion** | + | ===== SlerpUnclamped ===== |
+ | **SlerpUnclamped fun(a: Quaternion, b: Quaternion, t: num): Quaternion**\\ | ||
+ | Slerpと同じですが、第三引数 の値を[0, 1]に制限しません。 | ||
- | サンプル\\ | + | === サンプル === |
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 186: | ライン 185: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
Subitemが(0,0,0,1)からSubitem2の角度を通り越して球面補間を行って往復回転します。 | Subitemが(0,0,0,1)からSubitem2の角度を通り越して球面補間を行って往復回転します。 | ||
</code> | </code> | ||
- | 説明\\ | ||
- | Slerpと同じですが、第三引数 の値を[0, 1]に制限しません。 | ||
- | ===== Lerp() ===== | ||
- | **Lerp fun(a: Quaternion, b: Quaternion, t: num): Quaternion** | + | ===== Lerp ===== |
+ | **Lerp fun(a: Quaternion, b: Quaternion, t: num): Quaternion**\\ | ||
+ | 第一引数 と 第二引数 の間を 第三引数の値 で線形補間します。\\ | ||
+ | 第三引数の値 は[0, 1]の範囲です。 | ||
- | サンプル\\ | + | === サンプル1 === |
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 211: | ライン 210: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果1 === |
<code lua> | <code lua> | ||
Subitemが(0,0,0,1)からSubitem2の角度へ線形補間を行って往復回転します。 | Subitemが(0,0,0,1)からSubitem2の角度へ線形補間を行って往復回転します。 | ||
</code> | </code> | ||
- | 説明\\ | + | \\ |
- | Quaternion.Lerpは、第一引数 と 第二引数 の間を 第三引数の値 で線形補間します。第三引数の値 は[0, 1]の範囲です。 | + | |
- | サンプル2\\ | + | === サンプル2 === |
<file lua main.lua> | <file lua main.lua> | ||
--SunItemのゲームオブジェクト名とGetTransform("")の("")の中を一致させる必要があります。 | --SunItemのゲームオブジェクト名とGetTransform("")の("")の中を一致させる必要があります。 | ||
ライン 232: | ライン 231: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果2 === |
<code lua> | <code lua> | ||
(Subitemがゆっくりと振幅するように90度回転します。) | (Subitemがゆっくりと振幅するように90度回転します。) | ||
ライン 241: | ライン 240: | ||
ゆっくりと値を変化させることで、特定の姿勢から特定の姿勢にゆっくりと変化します。 | ゆっくりと値を変化させることで、特定の姿勢から特定の姿勢にゆっくりと変化します。 | ||
- | ===== LerpUnclamped() ===== | + | ===== LerpUnclamped ===== |
+ | **LerpUnclamped fun(a: Quaternion, b: Quaternion, t: num): Quaternion**\\ | ||
+ | Lerpと同じですが、第三引数 の値を[0, 1]に制限しません。 | ||
- | **LerpUnclamped fun(a: Quaternion, b: Quaternion, t: num): Quaternion** | + | === サンプル === |
- | + | ||
- | サンプル\\ | + | |
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 258: | ライン 257: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
Subitemが(0,0,0,1)からSubitem2の角度を通り越して線形補間を行って往復回転します。 | Subitemが(0,0,0,1)からSubitem2の角度を通り越して線形補間を行って往復回転します。 | ||
</code> | </code> | ||
- | 説明\\ | ||
- | Lerpと同じですが、第三引数 の値を[0, 1]に制限しません。 | ||
- | ===== AngleAxis() ===== | ||
- | **AngleAxis fun(angle: number, axis: Vector3): Quaternion** | ||
- | サンプル\\ | + | ===== AngleAxis ===== |
+ | **AngleAxis fun(angle: number, axis: Vector3): Quaternion**\\ | ||
+ | Vector3で方向を指定してその方向を回転の軸とし、angleの値だけ回転させます。\\ | ||
+ | サンプルでは''axis = Vector3.up''で下から上に向かった軸を作成して回転させています。\\ | ||
+ | angleは0~360の値で指定します。 | ||
+ | |||
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
--SunItemのゲームオブジェクト名とGetTransform("")の("")の中を一致させる必要があります。 | --SunItemのゲームオブジェクト名とGetTransform("")の("")の中を一致させる必要があります。 | ||
ライン 288: | ライン 289: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
(VCIをUseすると10度づつ回転します) | (VCIをUseすると10度づつ回転します) | ||
</code> | </code> | ||
- | Vector3で方向を指定してその方向を回転の軸とし、angleの値だけ回転させます。\\ | ||
- | サンプルでは''axis = Vector3.up''で下から上に向かった軸を作成して回転させています。\\ | ||
- | angleは0~360の値で指定します。 | ||
- | ===== LookRotation() ===== | ||
- | **LookRotation fun(forward: Vector3, upwards: Vector3): Quaternion** | + | ===== LookRotation ===== |
+ | **LookRotation fun(forward: Vector3, upwards: Vector3): Quaternion**\\ | ||
+ | upのベクトルと、forwardのベクトルを使用して、Quaternionを作成します。\\ | ||
+ | サンプルでは''rotate''と''vci.assets.GetTransform(target).GetRotation()''は同じ値をとります。 | ||
- | サンプル1\\ | + | === サンプル1 === |
<file lua main.lua> | <file lua main.lua> | ||
function onUngrab(target) | function onUngrab(target) | ||
ライン 312: | ライン 312: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果1 === |
<code lua> | <code lua> | ||
(0.0, -0.3, -0.1, 1.0) | (0.0, -0.3, -0.1, 1.0) | ||
ライン 319: | ライン 319: | ||
(0.0, 0.9, 0.0, 0.4) | (0.0, 0.9, 0.0, 0.4) | ||
</code> | </code> | ||
- | 説明\\ | ||
- | upのベクトルと、forwardのベクトルを使用して、Quaternionを作成します。\\ | ||
- | サンプルでは''rotate''と''vci.assets.GetTransform(target).GetRotation()''は同じ値をとります。\\ | ||
- | サンプル2\\ | + | |
+ | \\ | ||
+ | |||
+ | === サンプル2 === | ||
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 334: | ライン 334: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果2 === |
<code lua> | <code lua> | ||
Subitemが常にSubitem2の方を向きます。 | Subitemが常にSubitem2の方を向きます。 | ||
</code> | </code> | ||
- | ===== Dot() ===== | + | ===== Dot ===== |
+ | **Dot fun(a: Quaternion, b: Quaternion): number**\\ | ||
+ | 2つのQuaternionを比較して、その内積をとります。\\ | ||
+ | 戻り値は''-1~1''の間になります。 | ||
- | **Dot fun(a: Quaternion, b: Quaternion): number** | + | === サンプル === |
- | + | ||
- | サンプル\\ | + | |
<file lua main.lua> | <file lua main.lua> | ||
function onUngrab(target) | function onUngrab(target) | ||
ライン 352: | ライン 353: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
0.886427819728851 | 0.886427819728851 | ||
-0.289039075374603 | -0.289039075374603 | ||
- | (VCIを手から離した時に、掴んだアイテムとbaseとの内積をとります) | + | (VCIを手から離した時に、つかんだアイテムとbaseとの内積をとります) |
</code> | </code> | ||
- | 2つのQuaternionを比較して、その内積をとります。\\ | ||
- | 戻り値は''-1~1''の間になります。 | ||
- | ===== Angle() ===== | ||
- | **Angle fun(a: Quaternion, b: Quaternion): number** | + | ===== Angle ===== |
+ | **Angle fun(a: Quaternion, b: Quaternion): number**\\ | ||
+ | 第一引数 と 第二引数 の角度を返します。 | ||
- | サンプル\\ | + | === サンプル === |
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 375: | ライン 375: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
(125) | (125) | ||
</code> | </code> | ||
- | 説明\\ | ||
- | 第一引数 と 第二引数 の角度を返します。 | ||
- | ===== Euler() ===== | ||
- | **Euler fun(x: number, y: number, z: number): Quaternion** | + | ===== Euler ===== |
+ | **Euler fun(x: number, y: number, z: number): Quaternion**\\ | ||
+ | 回転をオイラー角(0°~360°)の値で指定し、Quaternionを作成します。\\ | ||
+ | 要素の指定は前から X → Y → Z の順に行います。 | ||
- | サンプル\\ | + | === サンプル === |
<file lua main.lua> | <file lua main.lua> | ||
---SunItemのゲームオブジェクト名とGetTransform("")の("")の中を一致させる必要があります。 | ---SunItemのゲームオブジェクト名とGetTransform("")の("")の中を一致させる必要があります。 | ||
ライン 399: | ライン 399: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
- | (VCIを掴んだ状態から離すと、回転(Rotation)が(x = 30, y = 45, z = 60)になります。) | + | (VCIをつかんだ状態から離すと、回転(Rotation)が(x = 30, y = 45, z = 60)になります。) |
</code> | </code> | ||
- | 回転をオイラー角(0°~360°)の値で指定し、Quaternionを作成します。\\ | ||
- | 要素の指定は前から X → Y → Z の順に行います。 | ||
- | ===== ToAngleAxis() ===== | ||
- | **ToAngleAxis fun(angle: usertype, axis: usertype)** | + | ===== ToAngleAxis(使用不可) ===== |
+ | **ToAngleAxis fun(angle: usertype, axis: usertype)**\\ | ||
+ | 回転を座標に対する角度の値 (AngleAxis) に変換します。\\ | ||
+ | ※現在使用することが出来ません。 | ||
- | サンプル\\ | + | === サンプル === |
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 424: | ライン 424: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
現在ToAngleAxisを使用することができません。 | 現在ToAngleAxisを使用することができません。 | ||
</code> | </code> | ||
- | ===== RotateTowards() ===== | + | ===== RotateTowards ===== |
+ | **RotateTowards fun(from: Quaternion, to: Quaternion, maxDegreesDelta: num): Quaternion**\\ | ||
+ | 2つのQuaternion間の最大となる回転を補間します。 | ||
- | **RotateTowards fun(from: Quaternion, to: Quaternion, maxDegreesDelta: num): Quaternion** | + | === サンプル === |
- | + | ||
- | サンプル\\ | + | |
<file lua main.lua> | <file lua main.lua> | ||
local Subitem = vci.assets.GetTransform("Subitem") | local Subitem = vci.assets.GetTransform("Subitem") | ||
ライン 444: | ライン 444: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
Subitemの回転がSubitem2の角度と同じになるように毎フレーム0.25度ずつ回転します | Subitemの回転がSubitem2の角度と同じになるように毎フレーム0.25度ずつ回転します | ||
</code> | </code> | ||
- | 説明\\ | ||
- | 2つのQuaternion間の最大となる回転を補間します。 | ||
- | ===== Normalize() ===== | ||
- | **Normalize fun(q: Quaternion): Quaternion** | ||
- | サンプル\\ | + | ===== Normalize ===== |
+ | **Normalize fun(q: Quaternion): Quaternion**\\ | ||
+ | qのノルムを1にし、単位Quaternionを返します。\\ | ||
+ | 引数なしで四元数quatの関数として使った場合(例:quat.Normalize())、オブジェクト側(quat)の値の変更がなされます。 | ||
+ | |||
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 467: | ライン 468: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
(2.0, 0.0, -0.8, 0.0) | (2.0, 0.0, -0.8, 0.0) | ||
ライン 473: | ライン 474: | ||
</code> | </code> | ||
- | 説明\\ | ||
- | qのノルムを1にし、単位Quaternionを返します。引数なしで四元数quatのメソッドとして使った場合(例:quat.Normalize())、オブジェクト側(quat)の値の変更がなされます。 | ||
- | ===== ToString() ===== | ||
- | **ToString fun(): string** | ||
- | サンプル\\ | + | ===== ToString ===== |
+ | **ToString fun(): string**\\ | ||
+ | 文字列に変換します。 | ||
+ | |||
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 488: | ライン 489: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
"(0.0, 0.0, 0.0, 1.0)" | "(0.0, 0.0, 0.0, 1.0)" | ||
</code> | </code> | ||
- | 説明\\ | ||
- | 文字列に変換します。 | ||
- | ===== ToEuler() ===== | ||
- | **ToEuler fun(): Vec3** | + | ===== ToEuler(非推奨) ===== |
+ | **ToEuler fun(): Vector3**\\ | ||
+ | ToEuler()は非推奨です。オイラー角に変換する場合は'eulerAngles'が推奨されます。\\ | ||
+ | -πrad ~ πradの範囲で値を返します。 | ||
- | サンプル\\ | + | |
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 508: | ライン 510: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
(60, -90, 30) | (60, -90, 30) | ||
</code> | </code> | ||
- | 説明\\ | + | |
- | ToEuler()は非推奨です。オイラー角に変換する場合は'eulerAngles'が推奨されます。\\ | + | ===== ToEulerAngles(非推奨) ===== |
+ | **EulerAngles fun(x: number, y: number, z: number): Quaternion**\\ | ||
+ | ToEulerAngles()は非推奨です。オイラー角に変換する場合は'eulerAngles'が推奨されます。\\ | ||
-πrad ~ πradの範囲で値を返します。 | -πrad ~ πradの範囲で値を返します。 | ||
- | ===== ToEulerAngles() ===== | + | === サンプル === |
- | + | ||
- | **ToEulerAngles fun(): Vec3** | + | |
- | + | ||
- | サンプル\\ | + | |
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 530: | ライン 530: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
(60, -90, 30) | (60, -90, 30) | ||
</code> | </code> | ||
- | 説明\\ | ||
- | ToEulerAngles()は非推奨です。オイラー角に変換する場合は'eulerAngles'が推奨されます。\\ | ||
- | -πrad ~ πradの範囲で値を返します。 | ||
===== identity ===== | ===== identity ===== | ||
**identity Quaternion**\\ | **identity Quaternion**\\ | ||
- | サンプル\\ | + | 基本的にQuaternion.identityでQuaternionを初期化します。 |
+ | |||
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
rotate = Quaternion.identity | rotate = Quaternion.identity | ||
ライン 547: | ライン 546: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code> | <code> | ||
(0.0, 0.0, 0.0, 1.0) | (0.0, 0.0, 0.0, 1.0) | ||
</code> | </code> | ||
- | 基本的にQuaternion.identityでQuaternionを初期化します。 | + | |
===== eulerAngles ===== | ===== eulerAngles ===== | ||
+ | **eulerAngles Vector3**\\ | ||
+ | Quaternionの値をオイラー角の値で返します。\\ | ||
+ | ''eulerAngles.''の後にアクセスしたい要素を指定する事で個別にアクセスする事も可能です。 | ||
- | **eulerAngles Vector3** | + | === サンプル === |
- | + | ||
- | サンプル\\ | + | |
<file lua main.lua> | <file lua main.lua> | ||
euler = Quaternion.Euler(30, 45, 60) | euler = Quaternion.Euler(30, 45, 60) | ||
ライン 568: | ライン 568: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code lua> | <code lua> | ||
(0.4, 0.2, 0.4, 0.8) | (0.4, 0.2, 0.4, 0.8) | ||
ライン 577: | ライン 577: | ||
</code> | </code> | ||
- | Quaternionの値をオイラー角の値で返します。\\ | + | |
- | ''eulerAngles.''の後にアクセスしたい要素を指定する事で個別にアクセスする事も可能です。 | + | |
===== normalized ===== | ===== normalized ===== | ||
- | |||
**normalized Quaternion** | **normalized Quaternion** | ||
+ | 単位Quaternionを返します。 | ||
- | サンプル\\ | + | === サンプル === |
<file lua main.lua> | <file lua main.lua> | ||
function onUse(use) | function onUse(use) | ||
ライン 594: | ライン 593: | ||
</file> | </file> | ||
- | 実行結果\\ | + | === 実行結果 === |
<code> | <code> | ||
(2.0, 0.0, -0.8, 0.0) | (2.0, 0.0, -0.8, 0.0) | ||
(0.9, 0.0, -0.4, 0.0) | (0.9, 0.0, -0.4, 0.0) | ||
</code> | </code> | ||
- | |||
- | 説明\\ | ||
- | 単位Quaternionを返します。 | ||