(クラス)
default: | 新規の SceneObject を作成します。SceneObject のインスタンスを作成することはできませんが、具象サブクラスでは、construct-super を使用してこのコンストラクタを呼び出すことができます。 |
コンストラクタ public | {SceneObject.default} |
フィールド public SceneObject.bounding-box-caching-enabled?:
bool =false
アクセサ public final SceneObject.bounding-box-or-object-visible?:
bool
フィールド public SceneObject.cached-bounding-box-dirty?:
bool =true
フィールド public SceneObject.local-bounding-box-color:
Color ={Palette.get-cyan}
フィールド public SceneObject.local-bounding-box-line-width:
Distance =1pt
フィールド public SceneObject.local-bounding-box-visible?:
bool =false
アクセサ public SceneObject.name:#
String セッター public SceneObject.name:#
String
アクセサ public SceneObject.opaque-to-intersection?:
bool セッター public SceneObject.opaque-to-intersection?:
bool
フィールド public SceneObject.parent-bounding-box-color:
Color ={Palette.get-yellow}
フィールド public SceneObject.parent-bounding-box-line-width:
Distance =1pt
フィールド public SceneObject.parent-bounding-box-visible?:
bool =false
アクセサ public SceneObject.scene:#
Scene セッター package sealed SceneObject.scene:#
Scene
visible?: | SceneObject が可視であるかどうかを指定するブール値。 |
アクセサ public SceneObject.visible?:
bool セッター public SceneObject.visible?:
bool
フィールド public SceneObject.world-bounding-box-color:
Color ={Palette.get-magenta}
フィールド public SceneObject.world-bounding-box-line-width:
Distance =1pt
フィールド public SceneObject.world-bounding-box-visible?:
bool =false
アクセサ public sealed SceneObject.world-position:
Distance3d セッター public sealed SceneObject.world-position:
Distance3d
public | {SceneObject.get-cached-local-bounding-box check-visibility?:bool = false }:(min-xyz:Distance3d, max-xyz:Distance3d, valid-bounds?:bool) |
public abstract | {SceneObject.get-local-bounding-box check-visibility?:bool = false }:(min-xyz:Distance3d, max-xyz:Distance3d, valid-bounds?:bool) |
intersect-box: | ボックスが SceneObject と交差する方法を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。 |
intersect-line: | 無限大の線と SceneObject との交差を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。 |
intersect-line-segment: | ライン セグメントと SceneObject との交差を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。 |
intersect-ray: | 光線と SceneObject との交差を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。 |
intersect-sphere: | 球が SceneObject と交差する方法を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。 |
public | {SceneObject.paint}:void |
public sealed | {SceneObject.point-to-ndc-point}:Float3d |
pre-paint: | このメソッドは描画される前に SceneObject の変換内容を修正するのに使用する必要があります。 |
public | {SceneObject.pre-paint}:void |
rotate: | 指定した軸の周囲で SceneObject を右方向にローカルに回転します。 |
public sealed | {SceneObject.rotate}:void |
scale: | SceneObject のスケールをローカルに実行します。 |
public sealed | {SceneObject.scale}:void |
public | {SceneObject.set-orientation-and-position}:void |
public sealed | {SceneObject.translate}:void |
(コンストラクタ)
public | {SceneObject.default} |
新規の SceneObject を作成します。SceneObject のインスタンスを作成することはできませんが、具象サブクラスでは、construct-super を使用してこのコンストラクタを呼び出すことができます。
visible?: SceneObject が可視であるかどうかを指定するブール値。既定値は true になります。
name:
SceneObject の名前を表す
String。既定値は
null になります。
注意事項
各残余引数には、オブジェクトの変換に影響を与えるキーと値のペアを指定することもできます。変換関連の 3 つの引数は次のとおりです。
- 移動 : Distance3d
- スケール : Double3d
- 回転 : Quaternion
これらの引数はオプションです。指定された順に適用され、何度も指定でき、渡される変換があればそれに反映されます。
引数が順番に適用され、同じキーを持つ引数はすべて処理されるという点で、この動作は実際のキーワード引数の場合と非常に異なります。
例
次の例では変換された
Quad が作成されています。
例:
Quad の変換 |
|
{import * from CURL.GRAPHICS.SCENE}
{SceneGraphic
width = 3in,
height = 3in,
{Scene
{Quad
|| First uniformly scale by 2
scale = {Double3d 2, 2, 2},
|| Then rotate around the z axis
rotate = {Quaternion.from-axis-rotation 45deg, {Double3d 0, 0, 1}},
|| Then translate in the x direction
translate = {Distance3d -1in, 0in, 0in},
|| Finally rotate again around the z axis
rotate = {Quaternion.from-axis-rotation 90deg, {Double3d 0, 0, 1}},
0in, 0in,
1in, 1in
}
}
}
| |
(フィールド)
public SceneObject.bounding-box-caching-enabled?:
bool =false
境界ボックスのキャッシュが有効であるかどうかを指定するブール値。
注意事項
(アクセサ)
アクセサ public final SceneObject.bounding-box-or-object-visible?:
bool オブジェクトまたはその境界ボックスが可視であるかどうかを指定するブール値。
(フィールド)
public SceneObject.cached-bounding-box-dirty?:
bool =true
キャッシュされた境界ボックスが未処理 (再計算する必要がある) であるかどうかを指定するブール値。
説明
サブクラス SceneObject で境界ボックスのキャッシュ メカニズムを使用する場合は、オブジェクトのジオメトリが変更する際に、このフィールドを true に設定する必要があります。
注意事項
(アクセサ)
この SceneObject の SceneObjectController。コントローラはアタッチされ次第、有効になります。既存のコントローラ (ある場合) は新しいコントローラをアタッチすると無効になります。
注意事項
(フィールド)
public SceneObject.local-bounding-box-color:
Color ={Palette.get-cyan}
SceneObject のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスの色。
(フィールド)
public SceneObject.local-bounding-box-line-width:
Distance =1pt
SceneObject のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスの線幅。
(フィールド)
public SceneObject.local-bounding-box-visible?:
bool =false
SceneObject のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスが可視であるかどうかを指定するブール値。
(アクセサ)
アクセサ public SceneObject.name:#
String セッター public SceneObject.name:#
String
(アクセサ)
アクセサ public SceneObject.opaque-to-intersection?:
bool セッター public SceneObject.opaque-to-intersection?:
bool SceneObject により他のオブジェクトが交点イベントを受け取るのを終了させるかどうかを指定します。
説明
既定値は
true になります。すなわち、
Predicate が
first で、
SortOrder が
forward の場合は、このオブジェクトの「背後」にある
SceneObject に交点イベントが届きません。
注意事項
通常のイベント処理の場合は、このプロパティは
EventHandler を持つオブジェクトにより置換されます。
opaque-to-intersection? が false の場合は、オブジェクトにそのイベントに該当する
EventHandler があれば、イベントは依然としてオブジェクトに影響を与えます。
SceneGroup.get-intersections を呼び出すと、
opaque-to-intersection? が、オブジェクトとイベントとの交差をテストするかどうかを指定する唯一の要素になります。
このプロパティは
SceneGroup 型のオブジェクトに影響を与えません。
(アクセサ)
(フィールド)
public SceneObject.parent-bounding-box-color:
Color ={Palette.get-yellow}
SceneObject の parent のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスの色。
(フィールド)
public SceneObject.parent-bounding-box-line-width:
Distance =1pt
SceneObject の parent のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスの線幅。
(フィールド)
public SceneObject.parent-bounding-box-visible?:
bool =false
SceneObject の parent のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスが可視であるかどうかを指定するブール値。
(アクセサ)
アクセサ public SceneObject.scene:#
Scene セッター package sealed SceneObject.scene:#
Scene この SceneObject が属する Scene。
(アクセサ)
SceneObject の変換。
このプロパティは Scene 型のオブジェクトに影響を与えません。
(アクセサ)
アクセサ public SceneObject.visible?:
bool セッター public SceneObject.visible?:
bool SceneObject が可視であるかどうかを指定するブール値。
(フィールド)
public SceneObject.world-bounding-box-color:
Color ={Palette.get-magenta}
Scene のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスの色。
(フィールド)
public SceneObject.world-bounding-box-line-width:
Distance =1pt
Scene のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスの線幅。
(フィールド)
public SceneObject.world-bounding-box-visible?:
bool =false
Scene のローカル座標フレームにある SceneObject の周囲に描画された軸平行境界ボックスが可視であるかどうかを指定するブール値。
(アクセサ)
アクセサ public sealed SceneObject.world-position:
Distance3d セッター public sealed SceneObject.world-position:
Distance3d ワールド座標内の SceneObject の座標空間の始点。
(アクセサ)
SceneObject をワールドに実際に変換 (Scene)。
注意事項
SceneObject が
Scene 階層の一部でない場合は、
world-transformation はその階層のルートにあるノードに変換内容を返します。
(メソッド)
public | {SceneObject.get-cached-local-bounding-box check-visibility?:bool = false }:(min-xyz:Distance3d, max-xyz:Distance3d, valid-bounds?:bool) |
ローカル座標システムにある SceneObject のキャッシュされた軸平行の 3 次元境界。
check-visibility?: このメソッドの呼び出し時にオブジェクトの可視性またはその境界ボックスがチェックされるかどうかを指定する
bool。
check-visibility? が
true、
SceneObject が不可視である場合は、返される境界は無効になります。既定値は
false になります。
戻り値
valid-bounds? :返された境界が有効であるかどうかを示す
bool。
説明
(メソッド)
public abstract | {SceneObject.get-local-bounding-box check-visibility?:bool = false }:(min-xyz:Distance3d, max-xyz:Distance3d, valid-bounds?:bool) |
SceneObject の軸平行である 3 次元のローカル境界。SceneObject のサブクラスにこのメソッドをオーバーライドする必要があります。
check-visibility?: このメソッドの呼び出し時にオブジェクトの可視性またはその境界ボックスがチェックされるかどうかを指定する
bool。
check-visibility? が
true、
SceneObject が不可視である場合は、返される境界は無効になります。既定値は
false になります。
戻り値
valid-bounds? :返された境界が有効であるかどうかを示す
bool。
オーバーライド
(メソッド)
親座標システムにある SceneObject の軸平行の 3 次元境界。
check-visibility?: このメソッドの呼び出し時にオブジェクトの可視性またはその境界ボックスがチェックされるかどうかを指定する
bool。
check-visibility? が
true、
SceneObject が不可視である場合は、返される境界は無効になります。既定値は
false になります。
戻り値
valid-bounds? :返された境界が有効であるかどうかを示す
bool。
(メソッド)
SceneObject の軸平行である 3 次元の変換された境界。
check-visibility?: このメソッドの呼び出し時にオブジェクトの可視性またはその境界ボックスがチェックされるかどうかを指定する
bool。
check-visibility? が
true、
SceneObject が不可視である場合は、返される境界は無効になります。既定値は
false になります。
戻り値
valid-bounds? :返された境界が有効であるかどうかを示す
bool。
(メソッド)
ワールド (最上位レベル) 座標システムにある SceneObject の軸平行の 3 次元境界。
check-visibility?: このメソッドの呼び出し時にオブジェクトの可視性またはその境界ボックスがチェックされるかどうかを指定する
bool。
check-visibility? が
true、
SceneObject が不可視である場合は、返される境界は無効になります。既定値は
false になります。
戻り値
valid-bounds? :返された境界が有効であるかどうかを示す
bool。
(メソッド)
ボックスが SceneObject と交差する方法を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。
(メソッド)
無限大の線と SceneObject との交差を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。
(メソッド)
ライン セグメントと SceneObject との交差を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。
(メソッド)
光線と SceneObject との交差を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。
(メソッド)
球が SceneObject と交差する方法を計算します。既定の実装では境界ボックスの交差を実行します。SceneObject のサブクラスにこのメソッドのオーバーライドが必要になる場合があります。
(メソッド)
Scene の Camera を使用すると、2 次元の正規デバイス座標が 3 次元の光線に変換されます。
ndc-point: 変換される正規デバイス座標。
viewport-width, viewport-height: 現在のビューポートの幅および高さ。
near-plane-point-origin?: 始点の位置を指定するブール値。near-plane-point-origin? が false (既定) の場合は、始点はカメラの点 (透視投影の場合) またはカメラの面 (正投影の場合) のいずれかになります。true の場合は、始点は常時、近クリップ面上にあります。
戻り値
origin, direction :返される光線の始点および方向
説明
(メソッド)
public | {SceneObject.paint}:void |
(メソッド)
public sealed | {SceneObject.point-to-ndc-point}:Float3d |
Scene の Camera を使用すると、3 次元モデルの点が 3 次元正規デバイス座標に変換されます。
point: 変換される 3 次元モデルの点。
viewport-width, viewport-height: 現在のビューポートの幅および高さ。
戻り値
3 次元正規デバイス座標を表す Float3d。
説明
モデルの点は変換前に SceneObject のローカル座標システムで変換されます。
注意事項
(メソッド)
Scene の Camera を使用すると、3 次元モデルの点が 2 次元ビューポートの点に変換されます。
point: 変換される 3 次元モデルの点。
viewport-width, viewport-height: 現在のビューポートの幅および高さ。
戻り値
2 次元ビューポートの点を表す FloatDistance2d。
説明
モデルの点は変換前に SceneObject のローカル座標システムで変換されます。
注意事項
このメソッドは 3 次元シーン内に 2 次元のビルボード テキストを描画する際に有用です。
例
次の例では、隅に 2 次元テキストを描画する
Quad オブジェクトのサブクラスが作成されています。
例:
TextQuad オブジェクト |
|
{import * from CURL.GRAPHICS.SCENE}
{define-class public TextQuad {inherits Quad}
{constructor public {default ...}
{construct-super ... }
}
{method open public {paint
renderer:Renderer3d,
viewport-width:Distance,
viewport-height:Distance
}:void
{super.paint renderer, viewport-width, viewport-height}
|| Compute the 2D viewport point.
let pos:Distance2d =
{self.point-to-viewport-point
{Distance3d self.x, self.y, self.z},
viewport-width,
viewport-height
}
|| Draw the 2D text.
{with
renderer.font = {Font "sans-serif",16pt},
renderer.texture = {Color.from-rgb 1, 1, 0}
do
{renderer.render-string-2d pos.x, pos.y, "Quad"}
}
}
}
{SceneGraphic
width = 3in,
height = 3in,
{Scene
{TextQuad -3in, -3in, 6in, 6in}
}
}
| |
(メソッド)
public | {SceneObject.pre-paint}:void |
このメソッドは描画される前に SceneObject の変換内容を修正するのに使用する必要があります。
注意事項
描画する前に SceneObject の変換内容を変更する場合 (すなわち、シーン オブジェクトをカメラに向ける) は、描画前メソッドを使用する必要があります。
このプロパティは
Scene 型のオブジェクトに影響を与えません。
(メソッド)
public sealed | {SceneObject.rotate}:void |
指定した軸の周囲で SceneObject を右方向にローカルに回転します。
注意事項
このプロパティは
Scene 型のオブジェクトに影響を与えません。
(メソッド)
public sealed | {SceneObject.scale}:void |
SceneObject のスケールをローカルに実行します。
注意事項
このプロパティは
Scene 型のオブジェクトに影響を与えません。
(メソッド)
public | {SceneObject.set-orientation-and-position}:void |
ある方向のオブジェクト (その負の z ベクトル) をグローバルにポイントします。上ベクトル(その正の y ベクトル)も指定する必要があります。そのオブジェクトのグローバルな位置は指定することができます。これは Camera の方向をつけるのに使用することができます。
注意事項
このプロパティは
Scene 型のオブジェクトに影響を与えません。
(メソッド)
public sealed | {SceneObject.translate}:void |
SceneObject の平行移動をローカルに実行します。
注意事項
このプロパティは
Scene 型のオブジェクトに影響を与えません。
(メソッド)
Scene の Camera を使用すると、2 次元ビューポートが 3 次元光線に変換されます。
viewport-point: 変換されるビューポートの点。
viewport-width, viewport-height: 現在のビューポートの幅および高さ。
near-plane-point-origin?: 始点の位置を指定するブール値。near-plane-point-origin? が false (既定) の場合は、始点はカメラの点 (透視投影の場合) またはカメラの面 (正投影の場合) のいずれかになります。true の場合は、始点は常時、近クリップ面上にあります。
戻り値
origin, direction :返される光線の始点および方向
説明
光線は SceneObject のローカル座標システムに変換されます。