Quick Links
> Homepage
|-- Overview
|-- Download
|-- Screenshots
|-- Community

> Code Sample Pack

> Reference Guide

> Changelog

> Overview of GLSL Hacker
> Live Coding
> Hack your first GLSL Code
> Moon3D


GLSL Hacker Articles

> Compute shaders on Radeon
> Distance functions in GLSL
> GLSL Interpolation Qualifiers
> Tessellation Spacing Modes
> Normal Visualizer with GS
> 3D Surface Plots
> Normal Mapping
> Circle and Disc in GLSL
> PhysX 3 Flag Demo
> GLSL Hacker on Raspberry Pi
GLSL Hacker

Reference Guide
Host-API Lua / Python



Back to Homepage
Back to Developer's Guide Index

gh_object Library


Description
gh_object is the module that manages all renderable nodes, in other terms the objects. A mesh or a camera is an object while a texture is not an object (it's a resource).

Number of functions: 31

gh_object.create

Description
Create a minimal object that can be rendered with a tripod (its local space).

Languages: Lua - Python

Return Values
  • object_id [INTEGER]: object identifier

    Code sample :

    gizmo = gh_object.create()


    gh_object.set_position

    Description
    Sets the relative position of an object.

    Languages: Lua - Python

    Alias: setpos

    Parameters
  • object_id [INTEGER]: Object identifier.
  • x, y, z [REAL]: 3D position.

    Code sample :

    gh_object.set_position(mesh, x, y, z)


    gh_object.get_position

    Description
    Gets the relative position of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Return Values
  • x, y, z [REAL]: 3D position

    Code sample :

    x, y, z = gh_object.get_position(object_id)


    gh_object.get_absolute_position

    Description
    Gets the absolute position of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Return Values
  • x, y, z [REAL]: 3D position

    Code sample :

    x, y, z = gh_object.get_absolute_position(object_id)


    gh_object.set_euler_angles

    Description
    Sets the relative orientation of an object using the Euler's angles.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • pitch, yaw, roll [REAL]: Euler's angles.

    Code sample :

    gh_object.set_euler_angles(object_id, pitch, yaw, roll)


    gh_object.set_orientation

    Description
    Sets the relative orientation of an object using a quaternion.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • x, y, z, w [REAL]: orientation quaternion.

    Code sample :

    q = {x=0, y=0, z=, w=1}
    gh_object.set_orientation(object_id, q.x, q.y, q.z, q.w)


    gh_object.set_scale

    Description
    Sets the relative scale of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • x, y, z [REAL]: 3D scaling factors.

    Code sample :

    gh_object.set_scale(object_id, x, y, z)


    gh_object.set_scale_vertices_position

    Description
    Scale the position of all vertices.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • x, y, z [REAL]: 3D scaling factors.

    Code sample :

    gh_object.set_scale_vertices_position(object_id, x, y, z)


    gh_object.flip_faces

    Description
    Flip the faces of a triangular object (a mesh).

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_object.flip_faces(object_id)


    gh_object.flip_vertex_normals

    Description
    Flip the normals of all vertices.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_object.flip_vertex_normals(object_id)


    gh_object.use_fixed_mvp_matrices

    Description
    Tells GLSL Hacker to update OpenGL fixed matrices (modelview) with the object transform matrice when this object is rendered. By default GLSL Hacker expects an OpenGL 3+ (full shader) rendering.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • state [INTEGER]: use (1) or not use (0) the fixed matrices.

    Code sample :

    gh_object.use_fixed_mvp_matrices(object_id, 1)


    gh_object.use_opengl21

    Description
    Specifies if an object (usually a mesh) uses the old OpenGL (with built-in vertex attributes, etc...) or not for the rendering. If built-in vertex attributes are used, a GLSL shader is not required for the rendering (old OpenGL style).

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • state [INTEGER]: use (1) or not use (0).

    Code sample :

    gh_object.use_opengl21(object_id, 1)


    gh_object.render

    Description
    Renders an object. This function supposes that gh_camera.bind() has been called.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_camera.bind(camera)
    gh_gpu_program.bind(prog)
    gh_object.render(mesh)


    gh_object.render_geometry

    Description
    Renders only the object geometry. Transformation matrix or material/textures/gpu program are not bound, you have to manually bind them before calling render_geometry().

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_gpu_program.bind(gpu_program)
    gh_texture.bind(texture, 0)
    gh_gpu_program.update_mvp_matrix(gpu_program, "gxl3d_ModelViewProjectionMatrix", camera, mesh_plane)
    gh_object.render_geometry(mesh_plane)


    gh_object.display_tripod

    Description
    Displays (renders) the tripod of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • x, y, z [REAL]: size of each axis of the tripod. Default value is 1.0

    Code sample :

    gh_gpu_program.bind(gpu_program)
    gh_texture.bind(texture, 0)
    gh_gpu_program.update_mvp_matrix(gpu_program, "gxl3d_ModelViewProjectionMatrix", camera, mesh_plane)
    gh_object.render_geometry(mesh_plane)
    gh_object.display_tripod(mesh_plane, 10, 10, 10)


    gh_object.set_display_tripod_state

    Description
    Sets the display state of the object tripod. This function has a meaning when the render() function is used to render an object. If you use render_geometry(), you have to use display_tripod() to draw the tripod.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • state [INTEGER]: true (1) or false (0).

    Code sample :

    -- Display the tripod
    gh_object.set_display_tripod_state(mesh, 1)
    gh_object.render(mesh)


    gh_object.set_tripod_size

    Description
    Sets the size (length) of object tripod axis.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • x, y, z [REAL]: length of each axis.

    Code sample :

    gh_object.set_tripod_size(mesh, 10, 10, 10)


    gh_object.display_grid

    Description
    Displays (renders) the a reference grid linked to the object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_gpu_program.bind(gpu_program)
    gh_texture.bind(texture, 0)
    gh_gpu_program.update_mvp_matrix(gpu_program, "gxl3d_ModelViewProjectionMatrix", camera, mesh_torus)
    gh_object.render_geometry(mesh_torus)
    gh_object.set_grid_params(mesh_torus, 50.0, 50.0, 20, 20, 1, 1)
    gh_object.display_grid(mesh_torus)


    gh_object.set_grid_params

    Description
    Sets the parameters of the object reference grid.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • width, depth [REAL]: size of the grid. Default value is 10.0
  • nsegs_x, nsegs_z [INTEGER]: number of segments on the X and Z axis. Default value is 10.
  • display_lines [INTEGER]: enables (1) or disables (0) the display of grid inside lines.
  • display_outlines [INTEGER]: enables (1) or disables (0) the display of grid outlines.

    Code sample :

    gh_object.set_grid_params(mesh_torus, 50.0, 50.0, 20, 20, 1, 1)


    gh_object.set_display_grid_state

    Description
    Sets the display state of the object grid. This function has a meaning when the render() function is used to render an object. If you use render_geometry(), you have to use display_grid() to draw the grid.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • state [INTEGER]: true (1) or false (0).

    Code sample :

    -- Display the grid
    gh_object.set_display_grid_state(mesh, 1)
    gh_object.render(mesh)


    gh_object.get_num_vertices

    Description
    Gets the number of vertices of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Return Values
  • num_vertices [INTEGER]: number of vertices

    Code sample :

    num_vertices = gh_object.get_num_vertices(mesh)


    gh_object.get_num_faces

    Description
    Gets the number of triangular faces of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Return Values
  • num_faces [INTEGER]: number of faces

    Code sample :

    num_faces = gh_object.get_num_faces(mesh)


    gh_object.set_tessellation_state

    Description
    Enables the rendering with hardware tessellation (OpenGL 4+). A tessellation GPU program is also required. This function works with meshes and models.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • state [INTEGER]: true (1) or false (0).

    Code sample :

    gh_object.set_tessellation_state(mesh, 1)


    gh_object.compute_faces_normal

    Description
    Computes the normal vector of all faces.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_object.compute_faces_normal(mesh)


    gh_object.compute_vertices_normal

    Description
    Computes the normal vector of all vertices.

    Languages: Lua

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_object.compute_vertices_normal(mesh)


    gh_object.average_vertices_normal

    Description
    Average the normal vector of all vertices.

    Languages: Lua

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_object.average_vertices_normal(mesh)


    gh_object.get_num_materials

    Description
    Gets the number of materials of an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Return Values
  • num_materials [INTEGER]: number of materials

    Code sample :

    num_materials = gh_object.get_num_materials(mesh)


    gh_object.get_material

    Description
    Gets a material from its index (0 ; get_num_materials()-1).

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • material_index [INTEGER]: material index.

    Return Values
  • material_id [INTEGER]: material identifier

    Code sample :

    material_id = gh_object.get_material(mesh, 0)


    gh_object.add_material

    Description
    Adds a material to an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • material_id [INTEGER]: material identifier.

    Code sample :

    gh_object.add_material(mesh, material_id)


    gh_object.remove_material

    Description
    Removes a material from an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.
  • material_id [INTEGER]: material identifier.

    Code sample :

    gh_object.remove_material(mesh, material_id)


    gh_object.remove_all_materials

    Description
    Removes all materials from an object.

    Languages: Lua - Python

    Parameters
  • object_id [INTEGER]: Object identifier.

    Code sample :

    gh_object.remove_all_materials(mesh)





  • (C)2012-2013 Geeks3D