Jump to content

  • Log In with Google      Sign In   
  • Create Account

Kimmi's developer blog

First OpenGEX-support ( alpha ) in Asset-Importer-Library

Posted by , 04 June 2015 - - - - - - · 1,040 views

in the last months I wrote an importer for the OpenGEX-asset-format in the Asset-Importer-Library. At the moment it supports:
  • Node hierarchies
  • Static meshes
  • Material definitions
You can find the importer in the Asset-Importer-Library-repository on GitHub: https://github.com/assimp/assimp

Bone-animationas and other features will follow. For the OpenDDL-parsing I used my own library called OpenDDL-Parser ( https://github.com/kimkulling/openddl-parser ).

Feel free to play around with it!

A simple OpenDDL-Parser

Posted by , in assimp, OpenDDL 02 March 2015 - - - - - - · 969 views
Asset Importer Lib, assimp and 2 more...
I started to work on a simple OpenDDL-parser. This will be used in the Asset-Importer-Library for the OpenGEX-importer, which I am currently working on. You can find it here:

Why I started to work on a separate parser and didn't used the reference implementation coming from Eric Lengyel?
  • When working on the OpenGEX-importer I saw that a OpenDDL-parser would be a really useful tool
  • I wanted to have it on github ( for issue tracking releases etc. ).
  • For reproducing issues I wanted to have a automated test suite
  • The reference implementation coming from here http://openddl.org/ is good for readability and understandability, but I wanted to play around with it on my own just for fun
I pre-released it as Alpha.

Asset Importer Library 3.1.1. is out

Posted by , in Realtime graphic, assimp 26 June 2014 - - - - - - · 1,997 views

I am happy to announce the Asset Importer Library 3.1.1. release. You can find the source on github: https://github.com/assimp/assimp/releases/tag/v3.1.1

You can find the pre-compiled binaries and the current release notes at sourceforge: https://sourceforge.net/projects/assimp/ .

And you can find our changes here: https://github.com/assimp/assimp/blob/master/CHANGES

Thanks for all supporters including all your nice feedback, bugreports, pullrequests and all the other stuff you helped us the last years.
And sorry for the name assimp, we just recocnized how bad it sounds in english :-).


I moved the ZFXCE2-repository to github

Posted by , 27 March 2013 - - - - - - · 966 views
Just if anyone is interested in: I moved the ZFXCE2-repository from SourceForge to Github. You can find it here: https://github.com/kimkulling/zfxce2

I did some progress in the rendering system:
  • Currently the whole transformations a re done via registered transformations groups.
  • I also introduces a base scene-graph. Currently no culling is done.
  • I fought a lot with the concept of a separate renderthread ( currently I am having only one Direct3D9 renderer finished ). What I now have is a simpe renderer for models imported with assimp.
If my little daugther let me some time I am working on a simple space-shooter, which is using the ZFXCE2. But it takes a loooot of time.

Assimp3.0 SDK is now released

Posted by , in Realtime graphic, assimp 14 July 2012 - - - - - - · 1,850 views

Hi all,

I am very proud to announce our new 3.0 release of the Assimp Importer Library:

And here are the release notes:
  • New export interface similar to the import API. Supported export formats are Collada, Obj, Ply and stl.
  • New import formats are XGL/ZGL
  • A new experimental importer is also there M3
  • Vastly improved IFC support
  • A new API to query importer meta informations like supported format versions, full name, maintainer info etc.
  • A new post processing step is there: Debone.
  • The Ogre XML importer was reworked
  • Hundreds of bugfixes
  • Unified nameing and cleanup of the public headers
  • Improved Cmake-build system
  • Debian package supported
You can download our SDK at http://sourceforge.net/projects/assimp/files/assimp-3.0/

Thank for all the contributors, users and everyone, who gave us feedback for our work!

Asset Importer Library 3.0 is out

Posted by , in assimp 29 June 2012 - - - - - - · 1,159 views

I am really glad to announce that the Asset-Importer-Library version 3.0 was released last week. Currently only a Source-Only package is available. The guy's from Debian asked for it and all the core-members of the assimp-team are currently really spare on time. But we will release the SDK as fast as possible.

You can find the source-package at Sourceforge: http://sourceforge.net/projects/assimp/files/assimp-3.0/

I wrote some interesting stuff abou the new features here: http://weblog.kimkulling.de/?p=45

I want to say "Thank you very very much!" to all the contributors who are helping us with bug reports, patches or just using us.

I will move my jornal to my private homepage

Posted by , 08 December 2011 - - - - - - · 638 views


I will move the detailed blog-posts regarding projects I am involved onto my own website: www.KimKulling.de . If their are any big new I will try to add some jornal entries here as well.


URI's and filesystem access

Posted by , in ZFX-Community-Engine 2, Realtime graphic, assimp 02 November 2011 - - - - - - · 864 views

  • first screen1

I finished the first approach to import assets in a separate loader task and I was able to see my first imported model. Currently any kind of texturing needs to be implemented. But how can you desribe the location of a resource like a texture or a shader in a elegant way?

So I added a class called Uri. This stands for unique resource identification ( see http://en.wikipedia....urce_Identifier to learn more about this ). This Uri is the new way to describe the place where you find your resources. For instance if you want to load a resource from your locale filesystem at
[source lang="cpp"][/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"]filename = "c:\models\spider.obj"[/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"][/source]

the URI format will be:

[source lang="cpp"]
uri = "file://c:/models/spider.obj" ( on a windows xp system )

The interesting thing is the scheme of the URI ( here the attribute file:// ), which describes the type of filesystem we have to use to open this resource. I introduced a new class called IOServer, where you can get a filesystem instance to manage the requested file system. For instance if you have a URI like:
[source lang="cpp"][/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"]uri = "zip://texture.jpg";[/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"][/source]
You can get the mounted filesystem and get a stream to access the resource as following:
[source lang ="cpp"][/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"]Stream *pZipStream = NULL;[/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"]IFileSystem *pFS = IOServer::instance()->getFileSystem( "zip" );[/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"]if ( pFS )[/size][/font][font="arial, sans-serif"] [/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"] pZipStream = pFS->open( uri, Stream::ReadAccess );[/size][/font][/size][/font][font="arial"][size="2"][font="arial, sans-serif"][size="2"][/source]

Currently I only have mounted the locale filesystem as the default one. If you want to use this you have to mount the zip-filesystem before:

[source lang="cpp"]
// Mount the zip file system.
IOServer::instance()->mountFileSystem( "zip", new ZipFileSystem( "c:\\archive.zip" );
// get the file system
IFileSystem *pFS = IOServer::instance()->getFileSystem( "zip" );

I saw this approach first in the Nebula3 Device and I was amazed to see a really clean design for that kind of problems. Thanks guys!

But there is still some work to do. Currently you can only mount one Zip-Archive. If you want to switch to a different one you have to unmount the older one and remount the new. Here I want to be able to deal with multiple archives. But for a first proof of concept this should work. And I missed a simple search method as well. Currently you have to know where to look for your textures. And this is not comfortable in my eyes.

Assimp is part of Debian

Posted by , 24 September 2011 - - - - - - · 718 views

just a short update from the Asset-Importer-Library. We are now part of the Debian-installation. Currently we are not part of the stable release, but hopefully we will get a lot of feedback from the linux front :-). And the last release of the Clan-Library will use our Collada-Loader. The old one used in older Clanlib-releases was replaced by Assimp. That are amazing developments we never planned at the beginning of Assimp.

And hopefully I will be able to deliver a M3-Loader ( the format of Starcraft2 ) in the next weeks as well.

Resource loading and a first triangle

Posted by , 18 September 2011 - - - - - - · 1,117 views

I wans't able to update this user-jornal the last couple of weeks, sorry. Currently I am in educational holiday for three months and my daughter learned one thing at the beginning: moving. So I had to learn how to avoid bigger accidents like switching off the computer or destroy the house very vrey fast at first Posted Image.

A first triangle will be rendered

I finished the basics of my Direct3D9-renderer. I was asked more than once why I started with D3D9, when D3D11 is the hot shit. The reason is pretty simple. I want to be able to try my demos on my devbox at my job as well and there I have to use a Windows-XP ^^. D3D11 is planned as well, but at first I want the basics running.
The Renderer runs in a separate render-task. To test the renderer itself I wrote a small render-test-app. This test runs in the main-thread. This makes debugging much simpler for me. I will add a screenshot-system to be able to automate the render-test if I have some time for it ( maybe the next decade ).

The Task-Manager
To be able to separate tasks into separate threads I have implement a class called TaskManager. This manager handles several task-instances ( creation, starting, stop them ). Each task can work in the main-thread or in a separate thread, which will be spawned for the task.
If you want to do something in a task you can send him an event. Events will be handled by EventHandlers. The user can implement this handler and attach them to a task. The event-handlers should be the hook for any user-specific stuff. So if you want to implement a task to handle some work you can use the task-manager to create a new task-instance. After that you can attach you own EventHandler and send user-specifc events to the task.

A first prototype for the Resource-Loading-System
The resource load procedure works, too. At this moment you can import models using the AssImp-Library in a separate thread. The ideas behind the resource system is really simple: resources are assigned to a unique resource-group-id. You can register a resource-factory and a resource-loader to this group id. Factories will create the resources, the loader will import the data. The resource-server will cache created resources to avoid redundat loadings.
If you want to create a new resource instance and load data into it the procedure is quite simple:
  • Get the Resource-Server instance.
  • Get the Factory and the Loader, which are assigned to the unique resource-group -d of your resource type
  • Create a new resource instance with the resource-factory. The factory gets the loader instance as a parameter. If you want to use a specific loader you can specify this here
  • No you can call Resource::onLoad to signal, that the resource loading should be started by the loader-task.
  • The resource-loading-request will be enqueued into the resource-loader-queue and handled as fast as possible.
This works and now I can test this for other resource types like shaders or textures as well.

Next steps
Currently I am working on the render setup for the imported models. On issue I am thinking about is how to handle the ownership of the model-data. After finishing the loading the resource-data-ownership will be moved from the loader-task to the main task. The render-task will get this data by receiving an event and store it in vertex- and index-buffers. If you have some nices ideas feel free to share them with me ...

The AssImp development
I made some progress at the assimp-deveopment as well. The M3-Importer grows and grows. At this moment I am able to import faces, normals and vertices. But I will need some more time to understand how to deal with the bone-system of the m3-format. Understanding such things is a much harder task if you child tries to switch off your computer again and again...

To be continued...

October 2016 »

23 242526272829