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.
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Post by hybrid »

Well, if you really fear that your posting gets lost you should submit a bug ticket.
CuteAlien
Admin
Posts: 9734
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Post by CuteAlien »

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.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Dareltibus
Posts: 115
Joined: Mon May 17, 2010 7:42 am

feature request

Post by Dareltibus »

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? :)
wing64
Competition winner
Posts: 242
Joined: Wed Jul 23, 2008 2:35 am
Location: Thailand
Contact:

Post by wing64 »

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,
CuteAlien
Admin
Posts: 9734
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Post by CuteAlien »

@wing64: Don't ISceneNode::setVisible, isVisible() do what you need in 1. and 2.?
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
sudi
Posts: 1686
Joined: Fri Aug 26, 2005 8:38 pm

Post by sudi »

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.
GameDude
Posts: 498
Joined: Thu May 24, 2007 12:24 am

Post by GameDude »

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.
wing64
Competition winner
Posts: 242
Joined: Wed Jul 23, 2008 2:35 am
Location: Thailand
Contact:

Post by wing64 »

@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).
CuteAlien
Admin
Posts: 9734
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Post by CuteAlien »

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.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Mel
Competition winner
Posts: 2292
Joined: Wed May 07, 2008 11:40 am
Location: Granada, Spain

Post by Mel »

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?
"There is nothing truly useless, it always serves as a bad example". Arthur A. Schmitt
greenya
Posts: 1012
Joined: Sun Jan 21, 2007 1:46 pm
Location: Ukraine
Contact:

Post by greenya »

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:
stefbuet
Competition winner
Posts: 495
Joined: Sun Dec 09, 2007 4:13 pm
Location: france

Post by stefbuet »

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());
:?:
greenya
Posts: 1012
Joined: Sun Jan 21, 2007 1:46 pm
Location: Ukraine
Contact:

Post by greenya »

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.
sudi
Posts: 1686
Joined: Fri Aug 26, 2005 8:38 pm

Post by sudi »

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.
greenya
Posts: 1012
Joined: Sun Jan 21, 2007 1:46 pm
Location: Ukraine
Contact:

Post by greenya »

Sudi wrote:btw greenya
did you think about using an emptyscenenode as pivot? that would do what ya want.
thanks, good idea! :)
Post Reply