Updates from September, 2016 Toggle Comment Threads | Keyboard Shortcuts

  • xuv 22:12 on 2016-09-30 Permalink | Reply
    Tags: , Kimai, ,   

    Polymorph weekly news #8 

    Bullet schema

    This will take only 5 minutes.

    This is what @frankiezafe and I told each other when starting our weekly meeting about the Polymorph.

    Time, whether it’s a good way to evaluate a human activity or not, is always going to be used as a reference. How much time did you spend on this? How long will it take to release a first video game? How much more time do you need to finish implementing Bullet? Do you have 5 minutes to share this article with your friends or read this weekly news? (which by now you have figured out is not even weekly).

    With computers it seems, we’re all quickly loosing track of time. Whatever the machine is doing to us, it is sucking it at an incredible pace. And EVERYONE in the business knows it. Let me quote a discussion between Ton Roosendaal and Bart Veldhuizen about development time:

    Our meeting, with the excuse of this post, took almost 2 hours. Of course we talked about other things than Polymorph. Of course this always happens between us two. But in an open structure like Polymorph, on an open source project like PEEL or the Polymorph Engine, how do you track the amount of work being done?

    Well, it’s not really a little secret, but within Polymorph, participants are encouraged to log the hours they spend on each project using Kimai. It’s certainly not the best way, but it’s not a bad way either. It’s also mostly a tool for oneself to figure out how much time we’ve spend on something. And believe it or not but @frankiezafe has already spend 350 hours developing the Polymorph Engine. Not bad if you ask me. This is over the course of the last 3 months, full time, or close.

    The Polymorph Engine is not finished yet, of course. But François is happy the way it advances. It will help build games faster in the future, as the most common operations for building a game will be immediately available, without hiding the complex process underneath it.

    For the technical minded in the audience, François is still working on adding Bullet to Ogre. The illustration of this artcile is from Bullet’s documentation, which François has praised as the best documentation he’s seen so far. Bullet (a physics engine) will be useful for both PEEL and for Tuning Scores. In PEEL, it will help to avoid collisions and discard impossible moves in the puzzle, while in Tuning Scores, the whole game play is based on the physical properties of the objects in the virtual world.

    This news took me 53 minutes to write. I better close now. I still have to post it on Twitter, Facebook and Diaspora*. You’d be so kind to give us a minute too and share it with your friends.


    • frankiezafe 19:44 on 2016-10-01 Permalink | Reply

      a programmer’s day lasts around 30 minutes, from 9am to 8pm for the rest of the world…

      • xuv 20:49 on 2016-10-02 Permalink | Reply

        Nope, it’s the other way around. A programmer’s day lasts 2 weeks for the rest of the world.
        Because if a programmer tells you that he can do something in a day, come back in 2 weeks for actual delivery.

  • xuv 01:32 on 2016-09-28 Permalink | Reply
    Tags: ,   

    Some news about the Blender 2.8 Viewport development.

    The Blender Foundation has defined a new major upgrade in Blender’s development with the release of version 2:8. And one of the big feature of this revamp is a new 3D viewport. Here is a detailed post about it. But what you might be especially interested in these lines:

    The new viewport will allow for more accurate preview of the external engine your project is targeting. Each engine may have different material and shading models, as well as unique screen effects. Whether you’re making assets for a movie or for a game, the idea is to see what it’s going to look like while you work on it.
    Game engines: Unreal (ii), Unity (ii), CryEngine (ii), Blend4Web (ii), Armory (ii), Godot (ii)

    Exciting times. Careful though, don’t rush into conclusions…

    (ii) Proper export of assets (with materials) to your engine of choice is not strictly part of the viewport project, and neither is the specific support of its shaders. The project will support Python addons so other developers can work on those integrations.

    So this means developers of external engines will have a way to integrate their engine as a preview directly in Blender. But It does not mean it’s done yet. Although seeing the growing popularity of Blender among 3D enthousiasts, the community behind each of those engines could be tempted to work on a dedicated Blender addon.

  • frankiezafe 21:32 on 2016-09-27 Permalink | Reply
    Tags: , , guidelines   

    Superb presentation about “Common C++ Performance Mistakes in Games” by Pete Isensee at GDC 4

  • frankiezafe 19:52 on 2016-09-24 Permalink | Reply
    Tags: , , , ,   

    Demo of physics in polymorph engine.

    A lot of stuff has been fixed since yesterday, but severe improvments are still to be done.

    In the video, only convex hulls and simple colliders (cubes & spheres) are used.

    To add a custom collider on a PNode, you call:

    pnode.load( sceneManager, “General”, “my-high-resolution.mesh” );
    pnode.physics( polymorph::BT_DYNAMIC_CONVEX, “General”, “my-low-resolution.mesh” );

    “my-low-resolution.mesh” will be used to calculate physics.

    Using convex is a problem for the blue thingies: the torus is not empty, but convered by an invisible “skin”. Therefore, other objects can not go through this huge hole… The issue should be solved by using the btGImpactMeshShape, but the shapes are behaving strangly when enabled. They jumps all the time…

  • xuv 00:01 on 2016-09-24 Permalink | Reply
    Tags: , , F/LAT, KDEnlive, , , ,   

    Polymorph weekly news #7 


    Welcome @louise! As a new member, she just joined the Polymorph team and this post will be presenting her to you and hopefully tell you more about her role and interest in the Polymorph project.

    I did not know Louise Baduel before having a conversation with her a couple hours ago. All I knew is that @frankiezafe had met her during the Blender workshop he gave at iMAL a few months ago and that he had offered her to work on the video game project he is working on for the company Contredanse.

    So Louise is a choreographer, dancer and videographer living in Brussels. She co-founded the dance collective System Failure and is interested in studying and understanding the relation between sound and performance. She also does video editing and wanted to start manipulating 3D objects and create them. That’s why she decided to come to a Blender class. She admitted having downloaded Blender 6 years ago, but needed a little push to get up to speed with the technology. And apparently, François’s classes were very helpful in that sense. So helpful that Louise agreed to join the Polymorph team and jump full time in Blender on a Linux system.

    Louise told me she had been quite interested in libre and open source software for a while. She is fed up with Apple’s logic. “I need to get out of this, she said. But working with video has been a show stopper for me as it is not as easy to do with Linux.” Now that she’s been working with Blender and Linux intensively for the past two weeks, she said she was ready to try video editing with Blender. She also tried KDEnlive last week but found it to be missing some features compared to FinalCut. But she likes this new approach to making things and will definitely experiment more now with this fully open source toolbox.

    At the same time she arrived at Polymorph, she also discovered F/LAT. She said she appreciate the feeling there and that everybody is happy to be helping each other when there is a problem or a question around open source software. “There is always someone available to answer a question” she said, and that helps her learn a lot every day.

    As you may have seen from @louise posts on this website, she is working on “Tuning Scores”, the code name for now for the video game being developed with professional dancers in mind. Tuning Scores is actually a series of techniques for dancers, put together by Lisa Nelson, to develop spontaneous compositions. And Polymorph is commissioned by Contredanse to port this into the virtual world of an interactive application, or so called, video game.

    There is many challenges in a project like this. It will be a game for two players. And there will have a palette of 3D objects to play with. The objects will be kept simple but the rules governing their behavior will be complex. Special attention will be given to the sound each object makes. The point here is not to be literal but to create a sensation. Dancers work with their feelings and need to feel the space they are in. The virtual world needs to be rich enough to invite the participants to interact with it and with each other. How will a dancer perceive the presence of another dancer in the game? How will they communicate? How can a dancer perform according to the rules of “Tuning Scores”? The players need to be able to repeat a set of actions s·he just made or play it backwards, freeze or sustain it. And overall what would be the purpose of this tool?

    Definitely there is a demand from Contredanse to get the word out about the “Tuning Scores” practice and the work of Lisa Nelson. This is one of the reason to come up with a project like this, but where could this head up to? Since sound is involved and reactive to the players actions, it could be a way to create or compose music. It could also be an application to put 2 dancers distant from each other physically and have them interact in the same room. It could also possibly be an instrument for live performance.

    All these questions will hopefully find an answer in the coming months, but they are certainly driving Louise research right now, with the help of the rest of the Polymorph team. This is a unique project and possibly the first of its kind. So keep an eye on this website for regular posts in this matter. And don’t worry, @frankie hasn’t left the development of PEEL. It’s advancing. Bullet is now integrated. But I’ll ask all about it when I’ll chat with Francois next week.

    In the meantime, stay tuned, and share responsibly.

  • frankiezafe 20:44 on 2016-09-23 Permalink | Reply
    Tags: , , ,   

    Bullet integration.

    Working on a wrapper to ease access to the ogre objects, in a namespace called polymorph 🙂

    For instance, here is how to declare objects.


    // simple nodes
    n0.sphere( sceneMgr );
    n0.orientation( Vector3( 0.3,-0.1,0 ) );
    n0.scale( 2.46 );
    n0.move( Vector3( -12,8,0 ) );
    n0.debug( true );

    n1.sphere( sceneMgr );
    n1.debug( true );
    n1.orientation( Vector3( -0.5,0.1,0 ) );
    n1.scale( 4 );
    n1.move( Vector3( 12,0,0 ) );

    // parenting n1 to n0
    n0.attach( &n1 );

    // nodes with physics
    my_sphere.sphere( sceneMgr );
    my_sphere.orientation( Vector3( 0.3,-0.1,0 ) );
    my_sphere.scale( 2.46 );
    my_sphere.move( Vector3( -12,8,0 ) );
    my_sphere.debug( true );
    my_sphere.physics( polymorph::BT_DYNAMIC_SPHERE );

    my_node.load( sceneMgr, “General”, “ob.mesh” );
    my_node.physics( polymorph::BT_DYNAMIC_FREE, “General”, “ob-physics.mesh” );
    my_node.scale( 5 );
    my_node.debug( true );

    Once done, to move an object, you call:

    my_sphere.yaw( Radian( 0.005 ) );
    my_node.yaw( Radian( 0.02 ), true );
    my_node.move( Vector3( -12,8,0 ) )

    Very soon, custom meshes will be available into Bullet!

    See P.E.2.0/bullet/app for sources.


  • Louise 21:46 on 2016-09-21 Permalink | Reply
    Tags: , , game design, ,   


    Tuning Scores’s visuals are slowly progressing…
    We have made some new objects with several layers of textures and a floating toolbar!
    In the projet, users can make “calls” to the space. These calls are a way to invite the other users to do something – these calls can be triggered via icons. To avoid the “overlay” effect, we placed the icons in the 3d space. Therefore, they have the same status as the other objects in the playground.


  • frankiezafe 20:06 on 2016-09-18 Permalink | Reply
    Tags: , , , spacialisation,   

    Sound source linked to Puredata.

    After the work of yesterday, a bit tedious, and a bit of cosmetics in pd, sound sources are now correctly linked with the sound. Pan is controlled by the x coordinates of the source. Source also send the file path to play to the track. The 3 tracks you see there are completely automatised, with the help of yacine sebti.

    About the file format, it’s a bit more tricky: puredata only reads .wav & .aif by default. An addon exists to load ogg (personal choice), but it only takes absolute path!

    Ogre cannot do that (find the absolute path) but boost::filesystem canref. Unfortunately, this part of the boost library is not binded to ogre… Another todo 🙂


    This post is related to this one

  • frankiezafe 21:11 on 2016-09-17 Permalink | Reply
    Tags: , , , , trigonometry   

    Trigonometry hell.

    Finishing the day with cool code running:

    • World coordinates to camera coordinates, especially usefull for sound sources. Indeed, top, right and front depends on the relative position of the source in the camera space, not the global one.
    • Transformation of the sticks direction into world coordinates relative to camera, once again. This time, calculation is based on the lookat location, keeping the system centered on the screen.

    Second point was trickier but solved first… Finding the position of an object in the camera space is basically a conversion of reference: center of the world is not (0,0,0) anymore, but camera world location + up is not (0,1,0) anymore, but camera orientation.

    A bit of code, it can help to understand the trick:

    // creation of the camera matrix, not sure it’s possible to retrieve it easier…
    Matrix4 cam_mat = Matrix4( cam->getDerivedOrientation() );
    cam_mat.setTrans( cam->getDerivedPosition() );
    // inversion of the cam matrix
    Matrix4 cam_mat_inverse = cam_mat.inverse();
    // for a given vector expressed in global
    Vector3 v( 10, 5, -45 );
    // construction of a matrix representing this translation
    Matrix4 m = Matrix4::IDENTITY;
    m.setTrans( rel );
    // MAGIC! > conversion to camera space
    m = cam_mat_inverse * m * cam_mat;
    // and, finally, getting back the coordinates in camera space
    v = relm.getTrans();


  • Louise 17:56 on 2016-09-17 Permalink | Reply
    Tags: , ,   

    First sketches of a new project.

    We are starting a new project called TUNING SCORES, in collaboration with Contredanse and based on the work of the choreographer Lisa Nelson, who developed with a group of dancers, an improvisation technique using both movement and verbal calls.

    TUNING SCORES is an intriguing way to investigate fundamental elements of performance, movement behavior, and communication, altogether. Through these, we communicate our desires, our imagination, and our memory, in a shared image space.

    We will turn these improvisation tools into a “video game”!

    These are the first sketches..


Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc