What are the plans for Irrlicht 1.8 and further?

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.

Postby hybrid » Wed Aug 18, 2010 7:40 pm

Well, if you really fear that your posting gets lost you should submit a bug ticket.
hybrid
Admin
 
Posts: 13970
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany

Postby CuteAlien » Thu Aug 19, 2010 1:23 am

ent1ty wrote:I know, it's just.. They could at least drop by and say something like 'We know about it, we will fix it in the future.'.


Yeah sorry, I already know about it. But it will be a few more weeks until I'll find time again for Irrlicht coding, until then all I can do is put stuff on my todo (and there is a lot on it already...).
IRC: #irrlicht on irc.freenode.net
My patches&stuff: http://www.michaelzeilfelder.de/irrlicht.htm
Games with Irrlicht: http://www.irrgheist.com/
News: http://www.reddit.com/r/irrlicht/
User avatar
CuteAlien
Admin
 
Posts: 5396
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany

feature request

Postby Dareltibus » Sun Aug 29, 2010 1:36 pm

Feature request: Very simple to implement(i think)

I have a feature request.

in the class "array".

this will be the best (and fastest method) to erase a contiguos
piece of the array when the start or the end is included in the area to be deleted.

Code: Select all
//! erase the array from "index" to "end" if option=false
/**erase the array from "index to "start" if option=true*/
void erase(u32 index, bool option ) //no default value for "option"
{
   if(index >= used)
      return;

   if(option)
   {
                // I really don't know what to put here  (but it must work as
                // erase(0,index) but in a faster and optimized way. i'm
                // working on find a  solution to that starting on the assumption
                // that the first parameter is always zero and the 2nd < "used"
   
             //used-=index;
   }
   else
   {
      for (i=index; i<used; ++i)
         allocator.destruct(&data[i]);
      used=index;
   }
}

or maybe instead of using "option" we can use two new methods

array::eraseToEnd(u32 index);
array::eraseToStart(u32 index);


ok it is not a general case but maybe some one might be interested in that. just looking at the second branch of the conditional "option" you see that it is very fast.
If I find the way to improve that function also with ("option"== true) it will be included in the engine? :)
User avatar
Dareltibus
 
Posts: 115
Joined: Mon May 17, 2010 7:42 am

Postby wing64 » Sat Sep 04, 2010 11:00 am

A little feature requests:
1. bool CSceneManager::unRegisterNodeForRendering(ISceneNode* node);
2. bool CSceneManager::isOk( ISceneNode* node); // for check alive scenenode in root
3. bool removeHighLevelShaderMaterial( s32 custom_mat_id );
best regards,
wing64
Competition winner
 
Posts: 204
Joined: Wed Jul 23, 2008 2:35 am
Location: Thailand

Postby CuteAlien » Sat Sep 04, 2010 12:11 pm

@wing64: Don't ISceneNode::setVisible, isVisible() do what you need in 1. and 2.?
IRC: #irrlicht on irc.freenode.net
My patches&stuff: http://www.michaelzeilfelder.de/irrlicht.htm
Games with Irrlicht: http://www.irrgheist.com/
News: http://www.reddit.com/r/irrlicht/
User avatar
CuteAlien
Admin
 
Posts: 5396
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany

Postby Sudi » Sat Sep 04, 2010 2:36 pm

wing64 wrote:A little feature requests:
1. bool CSceneManager::unRegisterNodeForRendering(ISceneNode* node);
2. bool CSceneManager::isOk( ISceneNode* node); // for check alive scenenode in root
3. bool removeHighLevelShaderMaterial( s32 custom_mat_id );
best regards,


1. Can be done with setVisible(false);
2. Can be done with if (Node->getParent()) EDIT: ok only works always when the parent is the root...hmm ok other idea. Node->setID(35453); if (Root->getSceneNodeByID(35353) == Node) and then set the ID back to what it was before
3. ok thats not possible
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
User avatar
Sudi
 
Posts: 1603
Joined: Fri Aug 26, 2005 8:38 pm

Postby GameDude » Sat Sep 04, 2010 11:46 pm

When will 1.8 be released? It has been quite some time, since the last release. I realize everyone has their own things going on, but its been a long time since the update, and Irrlicht generally updates itself rather fast. Well not updates itself, but a new release is usually seen realativley quickly.
GameDude
 
Posts: 459
Joined: Thu May 24, 2007 12:24 am

Postby wing64 » Sun Sep 05, 2010 3:20 am

@CuteAlien & @Sudi:
Thanks for respond my request and i understand you reply but setVisible(false) will effect in smgr in next time of main loop circle. If user is removed node after registered then smgr never know this node will lost or alive because engine not check node state when render function call.

@Sudi:
Why not possible ? i saw function for remove all material in null driver ( near remove all hardware buffer).
wing64
Competition winner
 
Posts: 204
Joined: Wed Jul 23, 2008 2:35 am
Location: Thailand

Postby CuteAlien » Mon Sep 06, 2010 12:45 pm

wing64 wrote:@CuteAlien & @Sudi:
Thanks for respond my request and i understand you reply but setVisible(false) will effect in smgr in next time of main loop circle. If user is removed node after registered then smgr never know this node will lost or alive because engine not check node state when render function call.


Sorry, I don't understand what you mean with "If user is removed node after registered". Visibility is a flag - so once set it stays. If you want to change that flag only at certain occasions you can do so. Not sure what you need - but maybe another thing is useful for you to know - you can grab() scenenodes yourself and keep them in some custom structure even if they are not part of the scenegraph. Then they are not rendered, but also not deleted and you can add them back to the scenegraph at some other time.
IRC: #irrlicht on irc.freenode.net
My patches&stuff: http://www.michaelzeilfelder.de/irrlicht.htm
Games with Irrlicht: http://www.irrgheist.com/
News: http://www.reddit.com/r/irrlicht/
User avatar
CuteAlien
Admin
 
Posts: 5396
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany

Postby Mel » Mon Sep 06, 2010 5:21 pm

I've been wondering also something about the bone animated meshes that i think it could improve the performance. I don't know how much though, but i think it could be useful. Besides it is an improvement that can be passed to any kind of skin methods (hardware based or not) because it works on the basic mesh.

The rough idea is to split a skinned mesh into polygons of 2 types: Flexibles and Rigids.

Flexible polygons are polygons whose vertices are bound to more than one bone, and the Rigid polygons are those whose vertices are all tied to the same bone.

The point would be to render the rigid polygons from static meshbuffers, perhaps one per bone, because they need no deformation at all, only the matrix transformations, that can be passed directly to the hardware, and that the flexible polygons are the only ones calculated in the skin process. They can be calculated as usual.

More or less that's the idea. Would it be feasible? maybe too complex?
http://santiagong.daportfolio.com/
"There is nothing truly useless, it always serves as a bad example". Arthur A. Schmitt
User avatar
Mel
Competition winner
 
Posts: 1788
Joined: Wed May 07, 2008 11:40 am
Location: Granada, Spain

Postby greenya » Fri Sep 10, 2010 10:46 am

Sometimes its necessary to rotate scene node about custom point (which is not belongs to scene node' mesh, its temporary (just like in Blender when you can rotate object about current cursor position)).

So i would like to propose to extend ISceneNode with next methods:
Code: Select all
void setPivot(vector3df);
vector3df getPivot();
void setPivotRotation(vector3df);
vector3df getPivotRotation();

Pivot value should be store within scene node and by default it should be equals to local scene node center -- <0,0,0>; and setPivotRotation() should just do additional rotation just like setRotation() do now, but when Pivot changes to something other than <0,0,0>, it also changes final object position and rotation because of its meaning.

The image of setPivot() and setPivotRotation() in action:
Image

Also same extending for scalling would be great:
Code: Select all
void setPivotScale(vector3df);
vector3df getPivotScale();


:roll:
User avatar
greenya
 
Posts: 951
Joined: Sun Jan 21, 2007 1:46 pm
Location: Ukraine

Postby stefbuet » Fri Sep 10, 2010 2:34 pm

But you can do that easily with matrix.
Code: Select all
core::matrix4 m;
m.setRotationCenter(myCenter);
m.setRotationDegrees(myRotation);
core::matrix4 from;
from->setRotationAngle(node->getRotation());
from->setTranslation(node->getPosition());
core::matrix4 newM=m*from;
node->setPosition(from->getTranslation());
node->setRotation(from->getRotation());

:?:
User avatar
stefbuet
Competition winner
 
Posts: 494
Joined: Sun Dec 09, 2007 4:13 pm
Location: france

Postby greenya » Fri Sep 10, 2010 3:17 pm

stefbuet wrote:But you can do that easily with matrix.
Code: Select all
core::matrix4 m;
m.setRotationCenter(myCenter);
m.setRotationDegrees(myRotation);
core::matrix4 from;
from->setRotationAngle(node->getRotation());
from->setTranslation(node->getPosition());
core::matrix4 newM=m*from;
node->setPosition(from->getTranslation());
node->setRotation(from->getRotation());

:?:


yes yes.
Also irr::scene has only helping classes, and indeed all which is really necessary is irr::video functionality. I know that.

I know that somehow with matrices its possible to do all those complex rotations, but Irrlicht suppose to be simplest graphic engine i believe. My math is very bad when it comes to matrices and vectors.

P.S.: Thank you any way for the code, i will try it.
User avatar
greenya
 
Posts: 951
Joined: Sun Jan 21, 2007 1:46 pm
Location: Ukraine

Postby Sudi » Fri Sep 10, 2010 5:50 pm

btw greenya
did you think about using an emptyscenenode as pivot? that would do what ya want.
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
User avatar
Sudi
 
Posts: 1603
Joined: Fri Aug 26, 2005 8:38 pm

Postby greenya » Fri Sep 10, 2010 11:40 pm

Sudi wrote:btw greenya
did you think about using an emptyscenenode as pivot? that would do what ya want.


thanks, good idea! :)
User avatar
greenya
 
Posts: 951
Joined: Sun Jan 21, 2007 1:46 pm
Location: Ukraine

PreviousNext

Return to Open Discussion and Dev Announcements

Who is online

Users browsing this forum: No registered users and 1 guest