TEST CORRECT....WHY?
This commit is contained in:
parent
a9526ce956
commit
8245d83309
@ -82,7 +82,9 @@ bool InitGizmoMoveStaticMesh()
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
SceneNode *root_node=new SceneNode(scale(0.5f),sphere);
|
SceneNode *root_node=new SceneNode();
|
||||||
|
|
||||||
|
root_node->CreateSubNode(sphere);
|
||||||
|
|
||||||
{
|
{
|
||||||
Transform tm;
|
Transform tm;
|
||||||
|
@ -42,7 +42,7 @@ bool InitGizmoRotateStaticMesh()
|
|||||||
{
|
{
|
||||||
Transform tm;
|
Transform tm;
|
||||||
|
|
||||||
tm.SetScale(5.0f);
|
tm.SetScale(10.0f);
|
||||||
|
|
||||||
root_node->CreateSubNode(tm,torus[0]);
|
root_node->CreateSubNode(tm,torus[0]);
|
||||||
|
|
||||||
|
@ -6,58 +6,58 @@ using namespace hgl;
|
|||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
|
|
||||||
const Vector3f GizmoPosition(0,0,0);
|
const Vector3f GizmoPosition(0,0,0);
|
||||||
|
//
|
||||||
/**
|
///**
|
||||||
* 一种永远转向正面的场景节点
|
//* 一种永远转向正面的场景节点
|
||||||
*/
|
//*/
|
||||||
class BillboardSceneNode:public SceneNode
|
//class BillboardSceneNode:public SceneNode
|
||||||
{
|
//{
|
||||||
CameraInfo *camera_info=nullptr;
|
// CameraInfo *camera_info=nullptr;
|
||||||
bool face_to_camera=false;
|
// bool face_to_camera=false;
|
||||||
|
//
|
||||||
ViewportInfo *viewport_info=nullptr;
|
// ViewportInfo *viewport_info=nullptr;
|
||||||
float fixed_scale=1.0;
|
// float fixed_scale=1.0;
|
||||||
|
//
|
||||||
public:
|
//public:
|
||||||
|
//
|
||||||
using SceneNode::SceneNode;
|
// using SceneNode::SceneNode;
|
||||||
virtual ~BillboardSceneNode()=default;
|
// virtual ~BillboardSceneNode()=default;
|
||||||
|
//
|
||||||
virtual void SetCameraInfo (CameraInfo * ci ){camera_info =ci;}
|
// virtual void SetCameraInfo (CameraInfo * ci ){camera_info =ci;}
|
||||||
virtual void SetViewportInfo(ViewportInfo * vi ){viewport_info =vi;}
|
// virtual void SetViewportInfo(ViewportInfo * vi ){viewport_info =vi;}
|
||||||
|
//
|
||||||
virtual void SetFaceToCamera(bool ftc ){face_to_camera=ftc;}
|
// virtual void SetFaceToCamera(bool ftc ){face_to_camera=ftc;}
|
||||||
virtual void SetFixedScale (const float size){fixed_scale =size;}
|
// virtual void SetFixedScale (const float size){fixed_scale =size;}
|
||||||
|
//
|
||||||
virtual bool RefreshTransform(const Transform &tf=IdentityTransform) override
|
// virtual bool RefreshTransform(const Transform &tf=IdentityTransform) override
|
||||||
{
|
// {
|
||||||
if(!camera_info)
|
// if(!camera_info)
|
||||||
{
|
// {
|
||||||
return SceneNode::RefreshTransform(tf);
|
// return SceneNode::RefreshTransform(tf);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if(face_to_camera)
|
// if(face_to_camera)
|
||||||
{
|
// {
|
||||||
LocalTransform.SetRotation(CalculateFacingRotationQuat(GetWorldPosition(),camera_info->view,AxisVector::X));
|
// LocalTransform.SetRotation(CalculateFacingRotationQuat(GetWorldPosition(),camera_info->view,AxisVector::X));
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if(viewport_info)
|
// if(viewport_info)
|
||||||
{
|
// {
|
||||||
const float screen_height=viewport_info->GetViewportHeight();
|
// const float screen_height=viewport_info->GetViewportHeight();
|
||||||
|
//
|
||||||
const Vector4f pos=camera_info->Project(GetWorldPosition());
|
// const Vector4f pos=camera_info->Project(GetWorldPosition());
|
||||||
|
//
|
||||||
LocalTransform.SetScale(pos.w*fixed_scale/screen_height);
|
// LocalTransform.SetScale(pos.w*fixed_scale/screen_height);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return SceneNode::RefreshTransform(tf);
|
// return SceneNode::RefreshTransform(tf);
|
||||||
}
|
// }
|
||||||
};//class BillboardSceneNode:public SceneNode
|
//};//class BillboardSceneNode:public SceneNode
|
||||||
|
|
||||||
class TestApp:public SceneAppFramework
|
class TestApp:public SceneAppFramework
|
||||||
{
|
{
|
||||||
SceneNode root;
|
SceneNode root;
|
||||||
BillboardSceneNode *rotate_white_torus=nullptr;
|
//BillboardSceneNode *rotate_white_torus=nullptr;
|
||||||
|
|
||||||
StaticMesh *sm_move=nullptr;
|
StaticMesh *sm_move=nullptr;
|
||||||
StaticMesh *sm_rotate=nullptr;
|
StaticMesh *sm_rotate=nullptr;
|
||||||
@ -89,20 +89,20 @@ private:
|
|||||||
root.CreateSubNode(sm_move->GetScene());
|
root.CreateSubNode(sm_move->GetScene());
|
||||||
root.CreateSubNode(sm_rotate->GetScene());
|
root.CreateSubNode(sm_rotate->GetScene());
|
||||||
|
|
||||||
{
|
//{
|
||||||
Transform tm;
|
// Transform tm;
|
||||||
|
|
||||||
tm.SetScale(7.5);
|
// tm.SetScale(7.5);
|
||||||
|
|
||||||
rotate_white_torus=new BillboardSceneNode(tm,face_torus);
|
// rotate_white_torus=new BillboardSceneNode(tm,face_torus);
|
||||||
|
|
||||||
rotate_white_torus->SetCameraInfo(ci);
|
// rotate_white_torus->SetCameraInfo(ci);
|
||||||
rotate_white_torus->SetFaceToCamera(true);
|
// rotate_white_torus->SetFaceToCamera(true);
|
||||||
|
|
||||||
root.AddSubNode(rotate_white_torus);
|
// root.AddSubNode(rotate_white_torus);
|
||||||
}
|
//}
|
||||||
|
|
||||||
root.RefreshTransform();
|
root.RefreshMatrix();
|
||||||
render_list->SetCamera(ci);
|
render_list->SetCamera(ci);
|
||||||
render_list->Expend(&root);
|
render_list->Expend(&root);
|
||||||
}
|
}
|
||||||
@ -149,7 +149,7 @@ public:
|
|||||||
// root.SetLocalTransform(tm);
|
// root.SetLocalTransform(tm);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
root.RefreshTransform();
|
root.RefreshMatrix();
|
||||||
render_list->UpdateLocalToWorld();
|
render_list->UpdateLocalToWorld();
|
||||||
|
|
||||||
SceneAppFramework::BuildCommandBuffer(index);
|
SceneAppFramework::BuildCommandBuffer(index);
|
||||||
|
2
res
2
res
@ -1 +1 @@
|
|||||||
Subproject commit e1a36d78f0eead5f6bb65493432c4690637b991d
|
Subproject commit 475d8ad43ceee084cd24f5d0bed59de9f6aa36fd
|
Loading…
x
Reference in New Issue
Block a user