Mittsu
3D Graphics Library for Ruby
Mittsu is a 3D Graphics Library for Ruby, based heavily on Three.js
GIFs!
(You can find the source for the Tank Demo here)
Installation
Add this line to your application's Gemfile:
gem 'mittsu'
And then execute:
$ bundle
Or install it yourself as:
$ gem install mittsu
Usage
Create a basic scene with a perspective camera and a green box:
require 'mittsu'
scene = Mittsu::Scene.new
camera = Mittsu::PerspectiveCamera.new(75.0, 1.0, 0.1, 1000.0)
camera.position.z = 5.0
box = Mittsu::Mesh.new(
Mittsu::BoxGeometry.new(1.0, 1.0, 1.0),
Mittsu::MeshBasicMaterial.new(color: 0x00ff00)
)
scene.add(box)
More Resources
Mittsu follows a similar structure to THREE.js, so you can generally use the same documentation for a description of the various classes and how they work.
If you want to actually render scenes, you'll need a renderer. There is a reference OpenGL renderer here.
See also
Where is Mittsu used?
- Manyfold - A self-hosted digital asset manager for 3d print files.
Where you can help
-
Testing!
Currently the only unit tests are for most of the maths library.
-
Refactoring!
The code is unfortunately still a mess. Mittsu started out as a direct port of THREE.js, and JavaScript to Ruby is not an exact science.
-
Find Bugs!
Mittsu is still very young, and there are plenty of small bugs and glitches that need to be ironed out. If you find a bug, create an issue so we can track it and squash it.
-
Add all the features!
Some of the things I'd like to see ported from THREE.js include:
- Picking (clicking on 3D objects in a scene)
- Bone structure/animation (e.g. for character movements)
- Lens Flares! (for JJ Abrams)
- All the Extras and Helpers (who doesn't need extra help?)
-
Write documentation!
You can use the same docs as THREE.js for now, but I would like to provide Mittsu-specific documentation so devs don't have to keep replacing
new THREE.Thing()
withMittsu::Thing.new
.
Contributing
- Fork it ( https://github.com/danini-the-panini/mittsu/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Thank you for helping me help you help us all. ;)