[News] Ogre Progress Report December 2015

News, announcements and important global threads from the Ogre3D Team.
Post Reply
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3810
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 139
Contact:

[News] Ogre Progress Report December 2015

Post by dark_sylinc » Fri Jan 01, 2016 6:25 pm

Happy New Year and Merry Christmas!

spacegaier has been busy with family stuff over the new year; so this time it's me posting the news.
It has been a long time since we posted some news. Fear not, we've just been very busy! People were starting to ask for a progress update; so there you go!

Thanks to everyone for choosing Ogre!

Direct link: http://www.ogre3d.org/2016/01/01/ogre-p ... ember-2015
0 x

User avatar
syedhs
Silver Sponsor
Silver Sponsor
Posts: 2702
Joined: Mon Aug 29, 2005 3:24 pm
Location: Kuala Lumpur, Malaysia
x 1

Re: [News] Ogre Progress Report December 2015

Post by syedhs » Sat Jan 02, 2016 9:35 am

Wow nice update... btw, I think Ogre needs better website, visually.. Maybe just slap in wordpress, find free template and throw in a few nice images.. and done with it.. :)

How long do you think you can finish the android, ios and osx? If it takes time (more than 6 months), then probably just release as it is.. then mark 2.2 to complete the rest of renderers..
0 x
A willow deeply scarred, somebody's broken heart
And a washed-out dream
They follow the pattern of the wind, ya' see
Cause they got no place to be
That's why I'm starting with me

User avatar
spookyboo
Silver Sponsor
Silver Sponsor
Posts: 1139
Joined: Tue Jul 06, 2004 5:57 am
x 15
Contact:

Re: [News] Ogre Progress Report December 2015

Post by spookyboo » Sat Jan 02, 2016 11:51 am

Good work!
I agree with syedhs about the website. It is time to move forward and start fresh.
Maybe it has been proposed before (I don't know), but isn't it possible to start some kind of kickstarter project to create a 2.1 demo with professional artwork/content? All backers get a nice demo and Ogre becomes attractive again.
0 x

User avatar
syedhs
Silver Sponsor
Silver Sponsor
Posts: 2702
Joined: Mon Aug 29, 2005 3:24 pm
Location: Kuala Lumpur, Malaysia
x 1

Re: [News] Ogre Progress Report December 2015

Post by syedhs » Sat Jan 02, 2016 12:34 pm

spookyboo wrote: Maybe it has been proposed before (I don't know), but isn't it possible to start some kind of kickstarter project to create a 2.1 demo with professional artwork/content?
That is a very good idea. I definitely will chime in and contribute! I don't speak for all, but I think old but non-active members will also be interested.
0 x
A willow deeply scarred, somebody's broken heart
And a washed-out dream
They follow the pattern of the wind, ya' see
Cause they got no place to be
That's why I'm starting with me

User avatar
GlowingPotato
Goblin
Posts: 211
Joined: Wed May 08, 2013 2:58 pm

Re: [News] Ogre Progress Report December 2015

Post by GlowingPotato » Mon Jan 04, 2016 12:25 pm

syedhs wrote:
spookyboo wrote: Maybe it has been proposed before (I don't know), but isn't it possible to start some kind of kickstarter project to create a 2.1 demo with professional artwork/content?
That is a very good idea. I definitely will chime in and contribute! I don't speak for all, but I think old but non-active members will also be interested.
Thats nice, I would be glad to help. PM me if you guys need a prop artist.
0 x

MattStevens
Goblin
Posts: 239
Joined: Mon Apr 07, 2008 10:27 pm

Re: [News] Ogre Progress Report December 2015

Post by MattStevens » Tue Jan 05, 2016 6:45 pm

In Ogre 2.1; TagPoints are much better: they are exactly like regular SceneNodes, except they occupy a little more RAM (a few more bytes per node), and can be attached to Bones. Other than RAM consumption, there is no performance penalty for replacing SceneNodes with TagPoints (*).

You can make a TagPoint child of a SceneNode, a SceneNode child of a TagPoint, and a TagPoint child of another TagPoint. The only thing you can’t do is make a SceneNode child of a Bone. You must use a TagPoint for that.
Thank god ! I might update to 2.1 just for this feature. Attaching objects to a bone and back to the scene is a real pain in the ass. Do you know how hard it would be to retro fit the changes to 1.9 or how to have the equivalent in 1.9 ? I'm wondering what happens if you attach a SceneNode to a TagPoint in 1.9. Looking at the code there is no check that prevents it. What kind of issues should I look for if I do it ?
0 x

User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3810
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 139
Contact:

Re: [News] Ogre Progress Report December 2015

Post by dark_sylinc » Wed Jan 06, 2016 6:24 am

MattStevens wrote:Do you know how hard it would be to retro fit the changes to 1.9 or how to have the equivalent in 1.9 ?
I'm afraid next to impossible because these TagPoints come from the new v2 Skeleton system that depends on the foundations laid in 2.0.

For what is worth in 1.x; I used to do this trick:

Create a TagPoint and a SceneNode. The attachment Entity will go to the SceneNode. Use a listener to translate the data from the TagPoint to the SceneNode ('childNode'):

Code: Select all

Entity *character;
Entity *weapon;

Ogre::SkeletonInstance *skeleton = character->getSkeleton();
Ogre::TagPoint *tagPoint = skeleton->createTagPointOnBone( skeleton->getBone(
                                            "Bone Name" ) );

SceneNode *childNode = rootSceneNode->createChildSceneNode();
childNode->attachObject( weapon );
tagPoint->setListener( new TagPointListener( childNode ) )
//Tell the child node that we have a tagPoint associated
childNode->getUserObjectBindings().setUserAny( Ogre::Any( tagPoint ) );

Code: Select all

class TagPointListener : public Ogre::Node::Listener
{
    Ogre::Node	*m_realNode; //Node where we redirect our updates
public:
    TagPointListener( Ogre::Node *realNode ) : m_realNode( realNode ) {}

    void nodeUpdated( const Ogre::Node *updatedNode )
    {
        m_realNode->setPosition( updatedNode->_getDerivedPosition() );
        m_realNode->setOrientation( updatedNode->_getDerivedOrientation() );
        m_realNode->setScale( updatedNode->_getDerivedScale() );
    }

    void nodeDestroyed( const Ogre::Node* )
    {
        delete this;
    }
};
The TagPointListener responds to TagPoint's changes and translates them to the SceneNode. When the TagPoint is destroyed, the TagPointListener nukes itself and the SceneNode is still part of the root scene node (though watch out for the dangling pointer in UserAny!)

To remove the 'weapon':

Code: Select all

const Ogre::Any &any = childNode->getUserObjectBindings().getUserAny();

if( !any.isEmpty() )
{
    //Remove associated tag point, we don't need it anymore
    Ogre::SkeletonInstance *skeleton = character->getSkeleton();
    Ogre::TagPoint *tagPoint = Ogre::any_cast<Ogre::TagPoint*>( any );

    Ogre::Node::Listener *listener = tagPoint->getListener();
    tagPoint->setListener( 0 );
    delete listener;

    skeleton->freeTagPoint( tagPoint );
}
It's a band aid, but it works well. It workarounds all the issues with 1.9's TagPoints at the cost of more RAM, the UserAny slot, and slower performance (2x nodes, which can be an issue if there's a loooot of TagPoints. Though you'll probably already have CPU performance issues if you've got many skeletally animated entities anyway)

It works because the attachment is actually linked to a SceneNode, not a TagPoint; and the listener just acts like a bridge. UserAny is a way of tagging the SceneNode that it is being linked to a TagPoint. If UserAny is already in use, you could keep an external list of nodes that have been linked to TagPoints.
0 x

MattStevens
Goblin
Posts: 239
Joined: Mon Apr 07, 2008 10:27 pm

Re: [News] Ogre Progress Report December 2015

Post by MattStevens » Wed Jan 06, 2016 3:55 pm

Thanks sylinc,
my oldest system was using tag point but I was changing the entity's parent and it was a real pain in the ass. Especially when I was trying to get the world position, it would only get up to the entity and then I would have to add the parent's entity transform.

Until we upgrade to Ogre 2.1 I'll use your system. I'm just wondering if it works with hardware skinning ? We use that feature for pretty much all of our animated skeletal meshes.

EDIT: Your system uses _getDerivedPosition of the TagPoint and sets it to the weapon's scene node. This function stops at the skeletal root bone, right ? That means you do not have the entity's transform accounted for. How do you fix that issues ? Will linking the weapon's scene node to the entity's parent scene node do the trick ?
0 x

User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3810
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 139
Contact:

Re: [News] Ogre Progress Report December 2015

Post by dark_sylinc » Wed Jan 06, 2016 4:43 pm

MattStevens wrote: Until we upgrade to Ogre 2.1 I'll use your system. I'm just wondering if it works with hardware skinning ? We use that feature for pretty much all of our animated skeletal meshes.
Do you mean the workaround or the 2.1 thing? Anyway, the answer is both.
However I realized something worth mentioning: There is a new class 'Item' which supersedes 'Entity' (it's now v1::Entity btw). v1::Entity is there to ease the transition from 1.x to 2.1 enormously (v1::Entity is slower in terms of performance than Item, but it's still much faster than it was in 1.x). Also v1::Entity still supports some features that haven't been ported yet (like pose animations).
Items use the new Skeleton system. TagPoints are designed for these skeletons.
v1::Entity uses the v1::Skeleton system. v1::Entity can be attached to the new TagPoints; but the new TagPoints can't be made child of a v1::Bone. In fact v1::TagPoint is broken and there was no plan to fix it (the TagPointListener trick should still work as you can also add the listener to a Bone directly, rather than a TagPoint)
EDIT: Your system uses _getDerivedPosition of the TagPoint and sets it to the weapon's scene node. This function stops at the skeletal root bone, right ? That means you do not have the entity's transform accounted for. How do you fix that issues ? Will linking the weapon's scene node to the entity's parent scene node do the trick ?
I looked again and I made a mistake. The sceneNode is not child of the Root scene node, but rather rather child of the Entity's scene node; which fixes the problem.
0 x

hydexon
Gremlin
Posts: 163
Joined: Sun Apr 14, 2013 8:51 pm

Re: [News] Ogre Progress Report December 2015

Post by hydexon » Wed Jan 06, 2016 5:10 pm

How about the Apple Metal Rendering Subsystem? i saw your Metal programming rants in Twitter time ago?, i'm not asking a ETA yet, probably when the v2-1-pso is merged in v2-1 branches?, i really don't care about DX12 yet, since i have MacBook (2014) with the El Capitan installed, and i can't use it a lot since my projects relies heavily with OGRE..., and Xcode is somewhat nice to work.
0 x

User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 3810
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 139
Contact:

Re: [News] Ogre Progress Report December 2015

Post by dark_sylinc » Fri Jan 08, 2016 7:50 pm

hydexon wrote:How about the Apple Metal Rendering Subsystem? i saw your Metal programming rants in Twitter time ago?, i'm not asking a ETA yet, probably when the v2-1-pso is merged in v2-1 branches?, i really don't care about DX12 yet, since i have MacBook (2014) with the El Capitan installed, and i can't use it a lot since my projects relies heavily with OGRE..., and Xcode is somewhat nice to work.
There's no ETA. Another forum dev is handling the Metal port. My Metal twitter rants were about the iPhone game we were developing (which heavily borrows code from Ogre, but doesn't use Ogre).
0 x

Post Reply