Git Product home page Git Product logo

tinysg's Introduction

tinysg

Tiny Scene Graph (TinySG) is a lightweight and extensible scene graph manager. It is the successor of my SceneML project.

Features

  • Lightweight scene graph.
  • Scenes can be saved/loaded from fairly simple XML definitions.
  • Fairly extensible scene and object queries supported through a plugin-type framework.
  • Current plugins support collision and distance queries based on ODE and the Lin-Canny algorithm respectively.

To-do Features

  • Finish porting SceneML's Matlab interface to TinySG
  • Finish multithreading scene node update algorithm to take advantage of today's multi-core computers

Example of a XML scene description

TinySG supports virtually every primitive geometry supported by ODE (e.g. boxes, spheres, capsules, etc) as well as arbitrary user-defined meshes specified in either OBJ or STL file formats.

<?xml version="1.0" ?>
<TinySG version="0">
    <node name="_WORLD_">
        <position value="0 0 0" />
        <orientation format="AngleAxis" angle="0" axis="1 0 0" />
        <object name="lspace" type="ODESimpleSpace" />
        <object name="rspace" type="ODESimpleSpace" />
    </node>
    <node name="n1" parent="_WORLD_">
        <position value="1 1 0" />
        <orientation format="AngleAxis" angle="0" axis="1 0 0" />
    </node>
    <node name="n3" parent="n1">
        <position value="2 0 0" />
        <orientation format="AngleAxis" angle="0" axis="1 0 0" />
        <object name="asphere" type="ODESphere">
            <property name="radius" class="real" value="2" />
            <property name="space" class="scene_object_ptr" value="rspace" />
        </object>
    </node>
    <node name="n4" parent="n1">
        <position value="0 0 0" />
        <orientation format="AngleAxis" angle="0" axis="1 0 0" />
    </node>
    <node name="n2" parent="_WORLD_">
        <position value="2 1 0" />
        <orientation format="AngleAxis" angle="0" axis="1 0 0" />
        <object name="abox" type="ODEBox">
            <property name="length" class="real" value="1" />
            <property name="width" class="real" value="2" />
            <property name="height" class="real" value="3" />
            <property name="space" class="scene_object_ptr" value="lspace" />
        </object>
    </node>
</TinySG>

tinysg's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.