Welcome on Hanami project web page!
Hanami is a personal project that I started in April 2009 and I am currently working on it.
Hanami is a 3D tools suite or, if you prefer, a 「Real-time rendering framework」.
The two main parts are Hanami Engine, a 3D engine for real-time rendering, and Ikebana Editor, a scene/game editor.
Hanami Engine is a real-time rendering engine. It can be used for various projects like gaming or research...
Works fine with Augmented Reality.
Collada model loader with skeleton, animations and many more...
Render target to texture, alpha blending, per-pixel lighting…
Lights and Shadows (spot lights and shadow volumes).
Parallax occlusion mapping with silhouette.
- Collada/XML model loading: 3DSmax, Maya, XSI, Google Sketchup (all Google Earth models can be loaded).
- Key frame animation, skeletal animation with skinned animation (hardware/shaders and software).
- Load .jpg, .png, .dds (with compression dxt1, dxt3, dxt5) and .pvr compressed textures in various pixel formats.
- Mip-mapping, Alpha blending (Transparency), Texture operations (add, sub, multiply…) (Not available in OpenGL|ES 2.0).
- Dynamic Stencil Shadow Volumes (Z-pass and Z-fail) (using auto-generated shaders).
- 4 light types: Ambient/Global light, Directional light, Point lights, Spot lights. (Projection lights when I get time.J)
- Per-pixel lighting (Pixel Shaders). Ambient, Lambert, Phong and Blinn lighting effects. One-light / multi-passes and multi-lights / multi-passes.
- Exclusive “ShaderLibrary” system to select and combine different shader codes. Auto-generate accurate shaders depending on provided data from models and keep them precompiled.
- Shaders libraies using nvidia CgFx or HLSL or GLSL ES…
- Normal maps, Parallax occlusion mapping with clipped silhouette (shaders).
- Environment mapping: Reflection, Refraction、Lights maps… using cube maps or 2d textures (shaders).
- Multiple render targets (MRT) - can render multiple views to multiple windows or textures. (Not available in OpenGL|ES 2.0)
- Accurate collision detection using Nvidia PhysX if possible or other available physic library when available (ODE…), physic with meshes or predefined (cube, sphere, cylinder…) can be attached to any entities/models.
- Rigid bodies (joints, springs, frictions…).
- Object oriented scene management: tags, entities, cameras, lights, materials, effects…
- Scene Graph, Entities, Customizable entities for custom (procedural) models、
- Hardware Model Instancing. (Not available in OpenGL|ES 2.0 ;_; )
- Primitive models: geo-sphere, cylinder, cube, plane, sky-box, sky-plane, sky-dome.
- Parallelized loading system.
- Plug-in / interface for renderers: can render on DirectX9, OpenGL | ES 2.0 and 3.0 for iPhone, Android and PC thanks to an abstract design.
- That permits to develop a specific renderer and shader libraries for any targeted device in few days! (Coming next: DirextX12 and iOS 8 Metal)
- Written in C++. “Hanami .Net”, a wrapper in C++/CLI, permits to use the engine from .net or mono framework applications: C#, VB.net, C++/CLI… for ez tools developments
- Shadow maps with soft shadows (PSM).
- Metal Renderer for iOS 8 (API of Metal seems to perfectly match with Hanami renderer interface that is unchanged from 6 years!! Great! ^o^)
- PRT, Ambient Occlusion.
- Area Lights.
- Water simulation.
- Nvidia PhysX integration of advanced physics.
- Forces fields （Wind, magnetism…）
- Clothes simulation.
- Path animations.
- Global LOD system. (Level of details, nearer from objects you are, more details you see).
- Portal system.
- multi-GPU optimizations.
- Image writer (for in-game screenshot by example).
- DirectX12 renderer and optimization (tessellation, specific shaders…).
- Pre-computed Global Illumination (GI) for generate hi-quality shadows and penumbra of static environments.
I made this engine for fun! I work on it when I have time…
To have the more customizable environment, I decided to use the less possible of external libraries.
By example, Collada loader use only tinyXml (FCollada or ColladaDOM libraries that are too heavy for just “unserialize” xml data and doesn’t work correctly with all models).
Image loader use only libjpg and libpng for .jpeg and .png files, while .dds (Direct Draw Surface) files are parsed directly and can be used by any devices.
Last update: 2014/06/02
Augmented Reality is more than a Reality!
I recently started to use augmented reality with the engine, using a modified ARToolKitPlus library and DirectShow for webcam and DV cameras.
It was easy to integrate in spite of a lack of documentation.
It is easy to make simple scene tests! It makes possible to move and rotate models, cameras, lights… in a very natural way.
Even physic tests are easy to manage and endless!
Just one bad point: there is no update for recent open or free-license AR libraries; all have turned to commercial products! ARtoolkit have been abandoned since 2006! >_<
Simple rigid bodies test with AR dominoes.
Last update 20/10/2010
Makes possible to create a complete scene and add scripting on objects: exactly like Flash with ActionScript.
Actually I am not working on, so it’s more a super model viewer than an editor, but main designs are done.
Because .net haven’t built-in Visual Studio user interface, I have redeveloped it for C# WPF, it works very fine! ^^
The usage of WPF (Windows Presentation Foundation) permits to enhance the display of Direct3D hosted applications. Because WPF is itself using Direct3D all UI components are refreshed in real-time and simplify considerably the code and finally the hosted 3D engine doesn’t have display bottlenecks like in C# Win Forms or C++ MFC Forms.
- Collada/XML model loading.
- Modular view system: you can load or unload a window from main workspace (exactly like in visual studio 2008).
- Complete view control: zoom / pan camera, arc ball camera, free camera, orthogonal or perspective view, useful views (front left top…)
- Rendering modes: full scene (with effects), textured/solid, wireframe, points.
- Save/load viewport configuration in XML file, so you can create custom viewport and add custom plug-ins.
- Microsoft Office Ribbon.
- Multi-threaded for fast rendering priorities.
- Ikebana is written in C# - WPF - Linq with .net framework 3.5 SP1.
- Move, rotate, scale model. ^^
- Entity control (duplicate, group models)
- Project explorer.
- Animation viewer.
- Adding lights, custom cameras…
- Polyline edition.
- Custom bounding volumes (cube, sphere, mesh)
- Syntax highlighted script edition window.
- Constant effects/shaders edition for testing full scene.
- Synchronization with source control system (CVS by example).
- In-game rendering (WYSIWYG). - Just press a key and you are in the scene you just designed!
Last update 2010/02/03
Hanami UT (C++): Some stuff for creating applications with Hanami Engine: mouse, keyboard, joysticks managements (DirectInput), sound management (DirectSound), base classes…
Hanami .Net (C++/CLI): .net wrapper of Hanami Engine client API. Allow using Hanami Engine from any .net application. Ikebana Editor uses it.
Hanami Script (C++): Scripting system for Hanami Engine.
Collada Viewer (C#): load Collada models, play animations. Materials and textures are editable.
Ikebana XBAP (C# - Silverlight - XBAP): Run Ikebana Editor from any Internet Explorer 8 in the world. Permits to work from anywhere, on distant projects.
You can download a Collada Viewer using Hanami Engine and AR: Collada Viewer AR Demo. - Last version 0.5.0 – 2010/10/10
Collada viewer loads Collada models, play animations. Materials and textures are editable.
The last version adds an Augmented Reality function to show your Collada models with 4 different types of ID-markers.
The program has been fully multi-threaded for more stability. 3 main threads: main program and UI, 3D rendering, video and AR detection.
Luminance (brightness) on model is computed locally, around the marker (using the white space of the marker): if one moves model from a dark to a bright area, luminance on the model follows.
You need a camera (webcam or fire-wire camera) to use this functionality.
Collada Viewer is a .net WPF application. Make sure you have Microsoft .NET Framework 3.5 SP1 installed on your computer.
Many models can be found here http://sketchup.google.com/3dwarehouse/ and on Google Earth.
Collada viewer - material edition:
Copyright © Christophe Paris 2010-2014
Collada documentation: http://www.khronos.org/collada/
Nvidia Gems: http://developer.nvidia.com/object/gpu-gems-3.html
Nvidia Cg cool stuff: http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter07.html
Math and physics stuff: http://www.euclideanspace.com/index.html
If you are experiencing some bugs with demos or just looking for contacting me you can use this address.