Skip to content

Commit fdae3d1

Browse files
extend mitsuba format with camera move speed
1 parent 2cefc12 commit fdae3d1

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

examples_tests/22.RaytracedAO/main.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ int main()
115115

116116
// TODO: Move into renderer?
117117
bool rightHandedCamera = true;
118+
float moveSpeed = core::nan<float>();
118119
auto camera = smgr->addCameraSceneNode(nullptr);
119120
auto isOkSensorType = [](const ext::MitsubaLoader::CElementSensor& sensor) -> bool {
120121
return sensor.type == ext::MitsubaLoader::CElementSensor::Type::PERSPECTIVE || sensor.type == ext::MitsubaLoader::CElementSensor::Type::THINLENS;
@@ -204,6 +205,7 @@ int main()
204205
camera->setProjectionMatrix(core::matrix4SIMD::buildProjectionMatrixPerspectiveFovRH(core::radians(realFoVDegrees), aspectRatio, nearClip, persp->farClip));
205206
else
206207
camera->setProjectionMatrix(core::matrix4SIMD::buildProjectionMatrixPerspectiveFovLH(core::radians(realFoVDegrees), aspectRatio, nearClip, persp->farClip));
208+
moveSpeed = persp->moveSpeed;
207209
}
208210
else
209211
{
@@ -271,7 +273,9 @@ int main()
271273
core::vector3df_SIMD ptu[] = {core::vectorSIMDf().set(camera->getPosition()),camera->getTarget(),camera->getUpVector()};
272274
auto proj = camera->getProjectionMatrix();
273275

274-
camera = smgr->addCameraSceneNodeFPS(nullptr, 80.f, core::min(extent.X, extent.Y, extent.Z) * 0.0001f);
276+
if (core::isnan(moveSpeed))
277+
moveSpeed = core::min(extent.X,extent.Y,extent.Z)*0.0001f;
278+
camera = smgr->addCameraSceneNodeFPS(nullptr,80.f,moveSpeed);
275279
camera->setPosition(ptu[0].getAsVector3df());
276280
camera->setTarget(ptu[1].getAsVector3df());
277281
camera->setUpVector(ptu[2]);

include/nbl/ext/MitsubaLoader/CElementSensor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class CElementSensor : public IElement
3737
};
3838
struct ShutterSensor
3939
{
40+
float moveSpeed = core::nan<float>();
4041
float shutterOpen = 0.f;
4142
float shutterClose = 0.f;
4243
};

src/nbl/ext/MitsubaLoader/CElementSensor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ bool CElementSensor::addProperty(SNamedPropertyElement&& _property)
163163
};
164164
auto setShutterOpen = SET_PROPERTY_TEMPLATE(shutterOpen,SNamedPropertyElement::Type::FLOAT,ShutterSensor);
165165
auto setShutterClose = SET_PROPERTY_TEMPLATE(shutterClose,SNamedPropertyElement::Type::FLOAT,ShutterSensor);
166+
auto setMoveSpeed = SET_PROPERTY_TEMPLATE(moveSpeed,SNamedPropertyElement::Type::FLOAT,ShutterSensor);
166167
auto setNearClip = SET_PROPERTY_TEMPLATE(nearClip,SNamedPropertyElement::Type::FLOAT,CameraBase);
167168
auto setFarClip = SET_PROPERTY_TEMPLATE(farClip,SNamedPropertyElement::Type::FLOAT,CameraBase);
168169
auto setFocusDistance = SET_PROPERTY_TEMPLATE(focusDistance,SNamedPropertyElement::Type::FLOAT,DepthOfFieldBase);
@@ -176,6 +177,7 @@ bool CElementSensor::addProperty(SNamedPropertyElement&& _property)
176177
{"fovAxis", setFovAxis},
177178
{"shutterOpen", setShutterOpen},
178179
{"shuttterClose", setShutterClose},
180+
{"moveSpeed", setMoveSpeed},
179181
{"nearClip", setNearClip},
180182
{"farClip", setFarClip},
181183
{"focusDistance", setFocusDistance},

0 commit comments

Comments
 (0)