V8 Javascript API

Triangle_mesh Class Reference

[Elements]

Description

Represents a triangle mesh within the scene graph. Actual mesh data is not loaded unless the mesh property is accessed or the mesh data fields are accessed. At that time a read-only binary representation of the mesh is retrieved and stored in the object. Refer to the documentation for the geometry_get_mesh command for details of this binary format. This representation can be passed to the static create method to generate a new mesh based on the data. It can also be edited by accessing the properties of this class which return JavaScript typed array views of the underlying binary representation. If these properties are modified the V8 representation will become inconsistent with that stored in the database until such time as the commit method is called. This will create a new mesh in the database with the same name as the existing one, overwriting it. You can also completely change the mesh data properties by setting them yourself but note that these will not be validated by this class.

Constructor

 Triangle_mesh( String name)
More...

Functions

varying as( String type_name)
Upcasts an element to a specific element type. More...
 commit()
Commits any changes made to the mesh. More...
the copy( String name, Number privacy_level)
Make a copy of this element in the database. More...
 create( String element_type, Number privacy_level)
Creates a scene element called name. More...
 delete()
Remove this element from the database.
bool  exists( String element_type)
Returns whether the element exists or not. More...
 localize( Number privacy_level)
Localizes this element. More...
varying property_get( String cache, String command, String element_name_arg, Function as_a)
Retrieves and caches a property of an element. More...
 property_set( String cache, String command, String element_name_arg, String value_arg_name, varying value, Function from_a)
Sets and caches a property of an element. More...
 set_material( String material, bool override)
Sets the material and, optionally, material override on this element. More...

Static Functions

Triangle_mesh create( String name, Object mesh, Boolean visible)
Creates a new Triangle_mesh. More...

Properties

Attributes attributes
The attributes associated with this element.
bool  disable
Set to true to disable the element and all elements below this in the scene graph. More...
bool  exists
Returns whether the triangle mesh exists or not. More...
bool  hide
Alias for disable.
Mdl_material_instance[] material
The material to use for this element. More...
Uint32Array  material_ids
The array of material_ids for each triangle.
String  material_override
The override attribute for the material. More...
Number  max_displacement
The maximum displacement allowed on an object.
Object  mesh
The actual mesh data in a binary representation retrieved on demand.
String  name
The name of the element. More...
Uint32Array  normal_indices
The array of normal_indices which specify the normals to be used for each vertex of a triangle. More...
Float32Array  normals
The array of normal point values used by the mesh.
Uint32Array  point_indices
The array of point_indices which specify the points to be used for each vertex of a triangle. More...
Float32Array  points
Returns the array of position point values used by the mesh.
Boolean  tagged
Whether or not the mesh should utilise the material_ids property to apply different materials to each triangle. More...
String  type_name
The type name of the element. More...
Array  user
The array of Float32Array items each of which represent the user data values for a given named user data set.
Array  user_indices
The array of Uint32Array items which specify the user data to be used for each vertex of a triangle. More...
Array  user_names
The array of string items which specify the names of the each user data set.
Array  user_sizes
The array of number items which specify the size of the vectors used by the user data.
Array  uv_indices
The array of Uint32Array items which specify the UVs to be used for each vertex of a triangle. More...
Array  uv_sizes
The array of number items which specify the size of the vectors used by the texture space.
Array  uvs
The array of Float32Array items each of which represent the UV values for a given texture coordinate space.

Constructor

Triangle_mesh( String name)

Note:

It is not possible to create a Triangle_mesh in the constructor.

Parameters

name
The name of the triangle mesh

Functions

varying Triangle_mesh.as( String type_name)

Upcasts an element to a specific element type. If this element is not of the given type then undefined is returned. If type_name does not have a matching element implementation an error is thrown. Note that this is not strictly an upcast but will return a new instance of the specific class representing type_name.

Parameters

type_name
the element type name to convert to.

Returns

the specific Element implementation for this element.

Triangle_mesh.commit()

Commits any changes made to the mesh. This will overwrite the current mesh in the database with the modified version. Please note that no validation is performed on the mesh data. Additionally note that the original mesh data is shadowed in the database and not deleted. If you wish to ensure the old data is removed you should create a new mesh with a differet name using the static create method and then remove the original mesh by calling its delete method.

the Triangle_mesh.copy( String name, Number privacy_level)

Make a copy of this element in the database.

Parameters

name
The name of the new element to copy to.
privacy_level
The privacy level to which the element will be copied. Defaults to the privacy level of the current scope.

Returns

copied element

Triangle_mesh.create( String element_type, Number privacy_level)

Creates a scene element called name. Throws on error.

Parameters

element_type
the type of element to create
privacy_level
The privacy level to create the element at. Defaults to the privacy level of the current scope.
Triangle_mesh Triangle_mesh.create( String name, Object mesh, Boolean visible) [static]

Creates a new Triangle_mesh.

Note:

Note that only the binary format is supported.

Parameters

name
the name of the triangle mesh to create
mesh
triangle mesh data used to create the mesh. See geometry_get_mesh command for details
visible
if true will set the visible attribute on the generated mesh. Defaults to true

Returns

the generated mesh scene element

Triangle_mesh.delete()

Remove this element from the database.

bool Triangle_mesh.exists( String element_type)

Returns whether the element exists or not.

Note:

element_type of 'Scene' is not supported. To test if a Scene exists use this.as('Scene') !== undefined

Parameters

element_type
if provided then the element must also be of this type.
Triangle_mesh.localize( Number privacy_level)

Localizes this element.

Parameters

privacy_level
The privacy level to which the element will be localized. Defaults to the privacy level of the current scope.
varying Triangle_mesh.property_get( String cache, String command, String element_name_arg, Function as_a)

Retrieves and caches a property of an element. The value of the property must be retrievable via a command that takes a single argument which is the name of the element to retrieve the property from. The name of this Element is used. If the returned property is another named scene Element then the element's constructor can be provided to return the element itself rather than it's name. On error this will return undefined.

Parameters

cache
name of the property to cache the result to
command
name of the RS command to get the property value
element_name_arg
name of the command argument to use for the element name
as_a
if the property being retrieved is an RS Element then the element constructor should be passed in here. The result of the command is assumed to be the element name and this is used to create an Element instance to return rather than the name of the element. Use undefined if the retrieved value is not an element.

Returns

the property value if it exists or undefined

Triangle_mesh.property_set( String cache, String command, String element_name_arg, String value_arg_name, varying value, Function from_a)

Sets and caches a property of an element. The value of the property must be set via a command that takes two arguments, one being the name of the element to set and the other being the property's value. The names of these arguments are passed in. If the property is another named scene Element then the element's constructor can be provided and value can either be the element itself or it's name. Will throw on error.

Parameters

cache
name of the property to cache the result to
command
name of the RS command to set the property value
element_name_arg
name of the command argument to use for the element name
value_arg_name
name of the value argument to use for the value
value
the value to set
from_a
if the property being set is a RealityServer Element then the element constructor should be passed in here. value can then either be the name of the scene element or the Element itself. If value is a name then an Element is constructed and cache rather than the name itself. Use undefined if the value does not represent an Element .
Triangle_mesh.set_material( String material, bool override)

Sets the material and, optionally, material override on this element.

Parameters

material
the material to set, see Element_scene_graph.material
override
if defined then sets override on the material, see Element_scene_graph.material_override

Properties

Attributes Triangle_mesh.attributes

The attributes associated with this element.

bool Triangle_mesh.disable

Set to true to disable the element and all elements below this in the scene graph. Set to false to show again or undefined to remove the disable attribute completely.

bool Triangle_mesh.exists

Returns whether the triangle mesh exists or not. This test is type checked.

bool Triangle_mesh.hide

Alias for disable.

Mdl_material_instance[] Triangle_mesh.material

The material to use for this element. When setting can supply either a String giving the name of the material to use or a Mdl_material_instance . Arrays of these can also be used. Note that single values will always be converted to arrays when setting. Getting always returns an array of Mdl_material_instance .

Uint32Array Triangle_mesh.material_ids

The array of material_ids for each triangle.

String Triangle_mesh.material_override

The override attribute for the material. Accepts the strings override or standard as valid values. Truthy non-string values will be interpreted as override, otherwise standard.

Number Triangle_mesh.max_displacement

The maximum displacement allowed on an object.

Object Triangle_mesh.mesh

The actual mesh data in a binary representation retrieved on demand.

String Triangle_mesh.name

The name of the element. Read only.

Uint32Array Triangle_mesh.normal_indices

The array of normal_indices which specify the normals to be used for each vertex of a triangle. This is a flat array, random access is possible by using the fact that all triangles always have three vertices

Float32Array Triangle_mesh.normals

The array of normal point values used by the mesh.

Uint32Array Triangle_mesh.point_indices

The array of point_indices which specify the points to be used for each vertex of a triangle. This is a flat array, random access is possible by using the fact that all triangles always have three vertices

Float32Array Triangle_mesh.points

Returns the array of position point values used by the mesh.

Boolean Triangle_mesh.tagged

Whether or not the mesh should utilise the material_ids property to apply different materials to each triangle. If true then the material_ids property must also be present

String Triangle_mesh.type_name

The type name of the element. If the element does not exists returns undefined. Read only.

Note:

For a Scene element this will return 'Attribute_container', not 'Scene'.

Array Triangle_mesh.user

The array of Float32Array items each of which represent the user data values for a given named user data set.

Array Triangle_mesh.user_indices

The array of Uint32Array items which specify the user data to be used for each vertex of a triangle. This is a flat array, random access is possible by using the fact that all triangles always have three vertices

Array Triangle_mesh.user_names

The array of string items which specify the names of the each user data set.

Array Triangle_mesh.user_sizes

The array of number items which specify the size of the vectors used by the user data.

Array Triangle_mesh.uv_indices

The array of Uint32Array items which specify the UVs to be used for each vertex of a triangle. This is a flat array, random access is possible by using the fact that all triangles always have three vertices

Array Triangle_mesh.uv_sizes

The array of number items which specify the size of the vectors used by the texture space.

Array Triangle_mesh.uvs

The array of Float32Array items each of which represent the UV values for a given texture coordinate space.