class Object
package h3d.scene
extended by SkinColliderDebugObj, AnimMeshBatcher, CameraController, HierarchicalWorld, Interactive, Joint, Light, Mesh, Scene, World
h3d.scene.Object is the base 3D class that all scene tree elements inherit from. It can be used to create a virtual container that does not display anything but can contain other objects so the various transforms are inherited to its children.
Constructor
Variables
alwaysSync:Bool
When unset, the object and all its children will not sync() if this root object or one of its parent is culled or not visible. This allows to optimize cpu cost of objects having many children.
alwaysSyncAnimation:Bool
When an object is not visible or culled, its animation does not get synchronized unless you set alwaysSyncAnimation=true
culled:Bool
Inform that the object is not to be displayed and his animation doesn't have to be sync. Unlike visible, this doesn't apply to children unless inheritCulled is set to true.
cullingCollider:Collider
When set, collider shape will be used for automatic frustum culling.
If inheritCulled
is true, collider will be inherited to children unless they have their own collider set.
defaultTransform:Matrix
This is an additional optional transformation that is performed before other local transformations. It is used by the animation system.
drawn:Bool
When set, the object has been drawn during previous frame. Useful for temporal effects such as temporal antialiasing.
fixedPosition:Bool
When set, the object and all its children will not sync() unless this root object position has been changed. This allows to optimize cpu cost of static objects having many children.
follow:Object
Follow a given object or joint as if it was our parent. Ignore defaultTransform when set.
followPositionOnly:Bool
When follow is set, only follow the position and ignore both scale and rotation.
inheritCulled:Bool
When enabled, the culled flag and culling collider is inherited by children objects.
lightCameraCenter:Bool
When selecting the lights to apply to this object, we will use the camera target as reference instead of the object absolute position. This is useful for very large objects so they can get good lighting. (this is only relevant in forward rendering)
name:Null<String>
The name of the object, can be used to retrieve an object within a tree by using getObjectByName
(default null)
Methods
addChildAt(o:Object, pos:Int):Void
Insert a child object at the specified position of the children list.
applyAnimationTransform(recursive:Bool = true):Void
When an object is loaded, its position scale and rotation will always be set to the default values (0 for position/rotation and 1 for scale). If it's part of a group/scene or if it's animated, then its position/rotation/scale will be stored into the defaultTransform matrix. Calling this function will reset the defaultTransform to null and instead initialize x/y/z/rotation/scale properties. This will not change the actual position of the object but allows you to move the object more freely on your own. Do not use on an object that is currently being animated, since it will set again defaultTransform and apply twice the transformation.
find<T>(f:Object ‑> Null<T>):Null<T>
Find a single object in the tree by calling f
on each and returning the first not-null value returned, or null if not found.
findAll<T>(f:Object ‑> Null<T>, ?arr:Array<T>):Array<T>
Find several objects in the tree by calling f
on each and returning all the not-null values returned.
getAbsPos():Matrix
Returns the updated absolute position matrix. Please note that this is not a copy so it should not be modified.
finalgetBounds(?b:Bounds, ?relativeTo:Object):Null<Bounds>
Return the bounds of this object and all its children, in absolute global coordinates or relative to the object being used as parameter.
inlinegetChildAt(n:Int):Object
Return the n
th element among our immediate children list, or null if there is no.
getChildIndex(o:Object):Int
Return the index of the object o
within our immediate children list, or -1
if it is not part of our children list.
finalgetCollider():Collider
Build and return the global absolute recursive collider for the object. Returns null if no collider was found or if ignoreCollide was set to true.
getGlobalCollider():Collider
Same as getLocalCollider, but returns an absolute collider instead of a local one.
getInvPos():Matrix
Returns the updated inverse position matrix. Please note that this is not a copy and should not be modified.
getLocalCollider():Collider
Build and returns the local relative not-recursive collider for the object, or null if this object does not have a collider. Does not check for ignoreCollide.
getLocalDirection():Vector
Return the direction in which the object rotation is currently oriented to
getMaterialByName(name:String):Material
Search for a material recursively by name, return it or null if not found.
getMaterials(?a:Array<Material>, recursive:Bool = true):Null<Array<Material>>
Return all materials in the tree.
getObjectByName(name:String):Object
Search for an object recursively by name, return null if not found.
getRotationQuat():Quat
Return the quaternion representing the current object rotation. Dot not modify as it's not a copy.
getTransform(?mat:Matrix):Matrix
Returns the local position, scale and rotation of the object relative to its parent.
globalToLocal(pt:Point):Point
Convert an absolute global position into a local position relative to the object origin, applying all the inherited transforms.
iterVisibleMeshes(callb:Mesh ‑> Void):Void
Iterate on all mesh that are currently visible and not culled in the tree. Call callb
for each mesh found.
inlineiterator():ArrayIterator_h3d_scene_Object
Return an iterator over this object immediate children
localToGlobal(?pt:Null<Point>):Null<Point>
Convert a local position (or [0,0] if pt is null) relative to the object origin into an absolute global position, applying all the inherited transforms.
playAnimation(a:Animation):Animation
Create an animation instance bound to the object, set it as currentAnimation and play it.
inlineremove():Void
Same as parent.removeChild(this), but does nothing if parent is null. In order to capture add/removal from scene, you can override onAdd/onRemove/onParentChanged
removeChild(o:Object):Void
Remove the given object from our immediate children list if it's part of it.
rotate(rx:Float, ry:Float, rz:Float, ?qTmp:Quat):Void
Rotate around the current rotation axis by the specified angles (in radian).
inlinesetPosition(x:Float, y:Float, z:Float):Void
Set the position of the object relative to its parent.
setRotation(rx:Float, ry:Float, rz:Float):Void
Set the rotation using the specified angles (in radian).
setRotationAxis(ax:Float, ay:Float, az:Float, angle:Float):Void
Set the rotation using the specified axis and angle of rotation around it (in radian).
setRotationQuat(q:Quat):Void
Set the quaternion representing the current object rotation. Dot not modify the value afterwards as no copy is made.
stopAnimation(recursive:Bool = false):Void
Stop the current animation. If recursive is set to true, all children will also stop their animation
switchToAnimation(a:Animation):Animation
Change the current animation. This animation should be an instance that was previously created by playAnimation.