Panagiotis Christopoulos Charitos 7 лет назад
Родитель
Сommit
adea290514

BIN
samples/simple_scene/assets/column.ankimesh


+ 2 - 1
samples/simple_scene/assets/scene.lua

@@ -74,7 +74,8 @@ lcomp:setShadowEnabled(1)
 
 node = scene:newPerspectiveCameraNode("Camera")
 scene:setActiveCameraNode(node:getSceneNodeBase())
-node:setAll(1.5708, 1.0 / getMainRenderer():getAspectRatio() * 1.5708, 0.1, 100)
+frustumc = node:getSceneNodeBase():getFrustumComponent()
+frustumc:setPerspective(0.1, 100, 1.5708, 1.0 / getMainRenderer():getAspectRatio() * 1.5708)
 trf = Transform.new()
 trf:setOrigin(Vec4.new(-0.0971127, 3.80237, 5.98675, 0))
 rot = Mat3x4.new()

+ 2 - 1
samples/sponza/assets/scene.lua

@@ -2567,7 +2567,8 @@ event:setFrequency(2, 0.02)
 
 node = scene:newPerspectiveCameraNode("Camera_001")
 scene:setActiveCameraNode(node:getSceneNodeBase())
-node:setAll(1.5708, 1.0 / getMainRenderer():getAspectRatio() * 1.5708, 0.1, 100)
+frustumc = node:getSceneNodeBase():getFrustumComponent()
+frustumc:setPerspective(0.1, 100, 1.5708, 1.0 / getMainRenderer():getAspectRatio() * 1.5708)
 trf = Transform.new()
 trf:setOrigin(Vec4.new(20.556, 11.265, 2.45598, 0))
 rot = Mat3x4.new()

+ 1 - 1
src/anki/scene/components/FrustumComponent.h

@@ -72,7 +72,7 @@ public:
 	void setPerspective(F32 near, F32 far, F32 fovX, F32 fovY)
 	{
 		ANKI_ASSERT(near > 0.0f && far > 0.0f && near < far);
-		ANKI_ASSERT(fovX > 0.0f && fovY > 0.0f && fovX < PI / 2.0f && fovY < PI / 2.0f);
+		ANKI_ASSERT(fovX > 0.0f && fovY > 0.0f && fovX < PI && fovY < PI);
 		ANKI_ASSERT(m_frustumType == FrustumType::PERSPECTIVE);
 		m_perspective.m_near = near;
 		m_perspective.m_far = far;

+ 5 - 3
tools/scene/Exporter.cpp

@@ -721,9 +721,11 @@ void Exporter::exportCamera(const aiCamera& cam)
 
 	file << "scene:setActiveCameraNode(node:getSceneNodeBase())\n";
 
-	file << "node:setAll(" << cam.mHorizontalFOV << ", "
-		 << "1.0 / getMainRenderer():getAspectRatio() * " << cam.mHorizontalFOV << ", " << cam.mClipPlaneNear << ", "
-		 << cam.mClipPlaneFar << ")\n";
+	file << "frustumc = node:getSceneNodeBase():getFrustumComponent()\n";
+
+	file << "frustumc:setPerspective(" << cam.mClipPlaneNear << ", " << cam.mClipPlaneFar << ", " << cam.mHorizontalFOV
+		 << ", "
+		 << "1.0 / getMainRenderer():getAspectRatio() * " << cam.mHorizontalFOV << ")\n";
 
 	// Find the node
 	const aiNode* node = findNodeWithName(cam.mName.C_Str(), m_scene->mRootNode);