Page 8 of 18

Posted: Wed Aug 18, 2010 7:40 pm
by hybrid
Well, if you really fear that your posting gets lost you should submit a bug ticket.

Posted: Thu Aug 19, 2010 1:23 am
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...).

feature request

Posted: Sun Aug 29, 2010 1:36 pm
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? :)

Posted: Sat Sep 04, 2010 11:00 am
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,

Posted: Sat Sep 04, 2010 12:11 pm
by CuteAlien
@wing64: Don't ISceneNode::setVisible, isVisible() do what you need in 1. and 2.?

Posted: Sat Sep 04, 2010 2:36 pm
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

Posted: Sat Sep 04, 2010 11:46 pm
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.

Posted: Sun Sep 05, 2010 3:20 am
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).

Posted: Mon Sep 06, 2010 12:45 pm
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.

Posted: Mon Sep 06, 2010 5:21 pm
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?

Posted: Fri Sep 10, 2010 10:46 am
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:

Posted: Fri Sep 10, 2010 2:34 pm
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());
:?:

Posted: Fri Sep 10, 2010 3:17 pm
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.

Posted: Fri Sep 10, 2010 5:50 pm
by sudi
btw greenya
did you think about using an emptyscenenode as pivot? that would do what ya want.

Posted: Fri Sep 10, 2010 11:40 pm
by greenya
Sudi wrote:btw greenya
did you think about using an emptyscenenode as pivot? that would do what ya want.
thanks, good idea! :)