Seba
Member
|
[Solved] Problem with actor
I started from some basics physics tutorials but i have problem with settings actor position. As you can see on first screen from tutorials when box position is set to Vec(0,-2,0) ground display at Vec(0,0,0) but all matrices are moved down.
The same problem i have on my application. When box from which I create ground is set to Vec(0,0,0) it works good. But when is set to Vec(0,-2,0). I have the same problem. Blue box is a box from which i create ground actor.
Second problem I have with Controller PhysMtrl. I was able to set PhysMtrl for other objects but for Controller it's allways set to default one.
Thanks for help.
//Edit
Screen from tutorial from old free version
(This post was last modified: 11-27-2015 07:52 PM by Seba.)
|
|
11-23-2015 10:42 PM |
|
Esenthel
Administrator
|
RE: Problem with actor
Hi,
The controller material is managed by the Controller class, if you specify CSS_MATERIAL in the Physics.create method, you can try setting a different CSS_* enum to that method.
As for the first problem, could you please try describing what is the issue exactly?
Are you drawing actors manually? maybe you need to call 'SetMatrix()' before drawing the actors?
If you do Physics.draw then you don't need that, but call SetMatrix before manual drawing.
|
|
11-26-2015 03:12 AM |
|
Seba
Member
|
RE: Problem with actor
Thanks for help with Controller it works now.
For the first problem. The first screen is from the latest engine version tutorial Joints 2. I only added matrix.draw. The last screen is from the old version EE 1.0 and for me this screen is correct. The code is the same but result for Physics.draw() is different. Problem for me is that Actors are drawn in different position compare to which position is set. When I use manual draw I get the same result as on last screen:
Code:
SetMatrix(ground.matrix());
ground.draw();
SetMatrix(box.matrix());
box.draw();
SetMatrix(MatrixIdentity);
My scene is on second screen, white big box is ground create from blue box. But when I draw actor with Physics.draw() and box.draw() I get result as on second screen for me this two drawings should be in one place.
Code:
//Init
ground.create(Box(15, 1, 15, Vec(0, -2, 0)), 0);
//Draw
Physics.draw ();
ground.matrix().draw();
box.matrix().draw();
Box(15, 1, 15, Vec(0, -2, 0)).draw(BLUE);
Thanks for help and advices.
|
|
11-26-2015 08:24 PM |
|
Esenthel
Administrator
|
RE: Problem with actor
Hi,
I think this could be because Actor.draw may change the 'SetMatrix'.
So for now you may need to call 'SetMatrix' after Physics.draw and after Actor.draw.
I'll see if I can remove changing SetMatrix inside Actor.draw
If this is not the issue, can you attach the sample project to reproduce the issue?
|
|
11-27-2015 11:36 AM |
|
Seba
Member
|
RE: Problem with actor
Thanks everything is working now.
This resolve problem:
Code:
Physics.draw(); // draw physical actors
SetMatrix(MatrixIdentity);
Maybe you should update 11 - Physics -> Join 2 Draw method to:
Code:
void Draw()
{
D .clear();
Physics.draw ();
SetMatrix(MatrixIdentity);
joint_pos.draw(RED); // draw joint position
D.line(GREEN, joint_pos, joint_pos+joint_dir*3); // draw a line from joint position and it's direction
D.text(0, 0.9, S+"Press Left / Right to change velocity");
D.text(0, 0.8, S+"Press Up / Down to change velocity, the object won't move because of the joint");
}
To display result correctly.
Again Thanks for help.
|
|
11-27-2015 07:50 PM |
|