Modifications in testbed application
This commit is contained in:
parent
2b0b4ea5fd
commit
80c49d3a85
|
@ -59,3 +59,5 @@ If you find any issue with the library, you can report it on the issue tracker [
|
|||
Thanks a lot to Erin Catto, Dirk Gregorius, Erwin Coumans, Pierre Terdiman and Christer Ericson for their amazing GDC presentations,
|
||||
their physics engines, their books or articles and their contributions on many physics engine forums.
|
||||
|
||||
- [Artbake Graphics](https://sketchfab.com/ismir) for the static castle 3D model used in testbed application ([CC license](https://creativecommons.org/licenses/by/4.0))
|
||||
|
||||
|
|
123770
testbed/meshes/castle.obj
Normal file
123770
testbed/meshes/castle.obj
Normal file
File diff suppressed because it is too large
Load Diff
25823
testbed/meshes/city.obj
25823
testbed/meshes/city.obj
File diff suppressed because it is too large
Load Diff
|
@ -119,7 +119,7 @@ void BridgeScene::createPhysicsWorld() {
|
|||
mBoxes[boxIndex] = new Box(true, BOX_SIZE, mPhysicsCommon, mPhysicsWorld, mMeshFolderPath);
|
||||
|
||||
// Set the box color
|
||||
mBoxes[boxIndex]->setColor(mObjectColorDemo);
|
||||
mBoxes[boxIndex]->setColor(mFloorColorDemo);
|
||||
mBoxes[boxIndex]->setSleepingColor(mSleepingColorDemo);
|
||||
|
||||
// Change the material properties of the rigid body
|
||||
|
|
|
@ -37,7 +37,7 @@ ConcaveMeshScene::ConcaveMeshScene(const std::string& name, EngineSettings& sett
|
|||
std::string meshFolderPath("meshes/");
|
||||
|
||||
// Compute the radius and the center of the scene
|
||||
openglframework::Vector3 center(0, 20, 0);
|
||||
openglframework::Vector3 center(0, 15, 0);
|
||||
|
||||
// Set the center of the scene
|
||||
setScenePosition(center, SCENE_RADIUS);
|
||||
|
@ -167,7 +167,7 @@ void ConcaveMeshScene::createPhysicsWorld() {
|
|||
// ---------- Create the triangular mesh ---------- //
|
||||
|
||||
// Create a convex mesh and a corresponding rigid in the physics world
|
||||
mConcaveMesh = new ConcaveMesh(true, mPhysicsCommon, mPhysicsWorld, mMeshFolderPath + "city.obj");
|
||||
mConcaveMesh = new ConcaveMesh(true, mPhysicsCommon, mPhysicsWorld, mMeshFolderPath + "castle.obj", rp3d::Vector3(0.5, 0.5, 0.5));
|
||||
|
||||
// Set the mesh as beeing static
|
||||
mConcaveMesh->getRigidBody()->setType(rp3d::BodyType::STATIC);
|
||||
|
|
|
@ -42,20 +42,16 @@ namespace trianglemeshscene {
|
|||
|
||||
// Constants
|
||||
const float SCENE_RADIUS = 70.0f; // Radius of the scene in meters
|
||||
static const int NB_BOXES = 50;
|
||||
static const int NB_SPHERES = 40;
|
||||
static const int NB_CAPSULES = 20;
|
||||
static const int NB_MESHES = 15;
|
||||
static const int NB_BOXES = 20;
|
||||
static const int NB_SPHERES = 20;
|
||||
static const int NB_CAPSULES = 10;
|
||||
static const int NB_MESHES = 5;
|
||||
static const int NB_COMPOUND_SHAPES = 3;
|
||||
const openglframework::Vector3 BOX_SIZE(2, 2, 2);
|
||||
const float SPHERE_RADIUS = 1.5f;
|
||||
const float CONE_RADIUS = 2.0f;
|
||||
const float CONE_HEIGHT = 3.0f;
|
||||
const float CYLINDER_RADIUS = 1.0f;
|
||||
const float CYLINDER_HEIGHT = 5.0f;
|
||||
const float CAPSULE_RADIUS = 1.0f;
|
||||
const float CAPSULE_HEIGHT = 1.0f;
|
||||
const float DUMBBELL_HEIGHT = 1.0f;
|
||||
const float SPHERE_RADIUS = 0.5f;
|
||||
const float CAPSULE_RADIUS = 0.5f;
|
||||
const float CAPSULE_HEIGHT = 0.5f;
|
||||
const float DUMBBELL_HEIGHT = 0.5f;
|
||||
|
||||
// Class TriangleMeshScene
|
||||
class ConcaveMeshScene : public SceneDemo {
|
||||
|
|
|
@ -34,14 +34,14 @@ using namespace openglframework;
|
|||
|
||||
int SceneDemo::shadowMapTextureLevel = 0;
|
||||
//openglframework::Color SceneDemo::mObjectColorDemo = Color(0.76f, 0.67f, 0.47f, 1.0f);
|
||||
openglframework::Color SceneDemo::mObjectColorDemo = Color(0.21f, 0.65f, 1.0f, 1.0f);
|
||||
openglframework::Color SceneDemo::mFloorColorDemo = Color(0.47f, 0.48f, 0.49f, 1.0f);
|
||||
openglframework::Color SceneDemo::mSleepingColorDemo = Color(1.0f, 0.25f, 0.25f, 1.0f);
|
||||
openglframework::Color SceneDemo::mObjectColorDemo = Color(0.0f, 0.68f, 0.99f, 1.0f);
|
||||
openglframework::Color SceneDemo::mFloorColorDemo = Color(0.7f, 0.7f, 0.7f, 1.0f);
|
||||
openglframework::Color SceneDemo::mSleepingColorDemo = Color(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
openglframework::Color SceneDemo::mSelectedObjectColorDemo = Color(0.09f, 0.88f, 0.09f, 1.0f);
|
||||
|
||||
// Constructor
|
||||
SceneDemo::SceneDemo(const std::string& name, EngineSettings& settings, reactphysics3d::PhysicsCommon& physicsCommon, bool isPhysicsWorldSimulated, bool isShadowMappingEnabled)
|
||||
: Scene(name, settings, isShadowMappingEnabled), mBackgroundColor(0.15, 0.15, 0.15, 1),
|
||||
: Scene(name, settings, isShadowMappingEnabled), mBackgroundColor(0.75, 0.75, 0.75, 1),
|
||||
mIsShadowMappingInitialized(false),
|
||||
mDepthShader("shaders/depth.vert", "shaders/depth.frag"),
|
||||
mPhongShader("shaders/phong.vert", "shaders/phong.frag"),
|
||||
|
@ -54,18 +54,19 @@ SceneDemo::SceneDemo(const std::string& name, EngineSettings& settings, reactphy
|
|||
shadowMapTextureLevel++;
|
||||
|
||||
// Move the lights
|
||||
float lightsRadius = 40.0f;
|
||||
float lightsRadius = 80.0f;
|
||||
float lightsHeight = 50.0f;
|
||||
mLight0.translateWorld(Vector3(0.4f * lightsRadius, 0.6 * lightsHeight, 0.4f * lightsRadius));
|
||||
mLight1.translateWorld(Vector3(-0.4 * lightsRadius, 0.6 * lightsHeight, 0.4 * lightsRadius));
|
||||
mLight2.translateWorld(Vector3(-0.40f * lightsRadius, -lightsHeight, -0.4f * lightsRadius));
|
||||
mLight2.translateWorld(Vector3(0.40f * lightsRadius, -5, -0.4f * lightsRadius));
|
||||
|
||||
// Set the lights colors
|
||||
float lightIntensity = 0.6f;
|
||||
float lightIntensity = 0.5;
|
||||
Color lightColor(lightIntensity * 1.0, lightIntensity * 1.0f, lightIntensity * 1.0f, 1.0f);
|
||||
Color noLightColor(0, 0, 0, 1);
|
||||
mLight0.setDiffuseColor(lightColor);
|
||||
mLight1.setDiffuseColor(lightColor);
|
||||
mLight2.setDiffuseColor(lightColor);
|
||||
mLight2.setDiffuseColor(noLightColor);
|
||||
|
||||
mShadowMapLightCameras[0].translateWorld(mLight0.getOrigin());
|
||||
mShadowMapLightCameras[0].rotateLocal(Vector3(1, 0, 0), -PI / 4.0f);
|
||||
|
@ -151,7 +152,7 @@ void SceneDemo::update() {
|
|||
|
||||
void SceneDemo::rotateCameraAnimation() {
|
||||
|
||||
const float angle = 0.1f * (PI / 180.0);
|
||||
const float angle = 0.12f * (PI / 180.0);
|
||||
mCamera.rotateAroundWorldPoint(Vector3(0, 1, 0), angle, mCenterScene);
|
||||
}
|
||||
|
||||
|
@ -258,7 +259,7 @@ void SceneDemo::render() {
|
|||
mPhongShader.setVector3Uniform("light0PosCameraSpace", worldToCameraMatrix * mLight0.getOrigin());
|
||||
mPhongShader.setVector3Uniform("light1PosCameraSpace", worldToCameraMatrix * mLight1.getOrigin());
|
||||
mPhongShader.setVector3Uniform("light2PosCameraSpace", worldToCameraMatrix * mLight2.getOrigin());
|
||||
mPhongShader.setVector3Uniform("lightAmbientColor", Vector3(0.2f, 0.2f, 0.2f));
|
||||
mPhongShader.setVector3Uniform("lightAmbientColor", Vector3(0.1f, 0.1f, 0.1f));
|
||||
mPhongShader.setVector3Uniform("light0DiffuseColor", Vector3(mLight0.getDiffuseColor().r, mLight0.getDiffuseColor().g, mLight0.getDiffuseColor().b));
|
||||
mPhongShader.setVector3Uniform("light1DiffuseColor", Vector3(mLight1.getDiffuseColor().r, mLight1.getDiffuseColor().g, mLight1.getDiffuseColor().b));
|
||||
mPhongShader.setVector3Uniform("light2DiffuseColor", Vector3(mLight2.getDiffuseColor().r, mLight2.getDiffuseColor().g, mLight2.getDiffuseColor().b));
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
// Constants
|
||||
const int SHADOWMAP_WIDTH = 2048;
|
||||
const int SHADOWMAP_HEIGHT = 2048;
|
||||
const float MOUSE_MOVE_BODY_FORCE = 100000.0f;
|
||||
const float MOUSE_MOVE_BODY_FORCE = 200000.0f;
|
||||
|
||||
// Class SceneDemo
|
||||
// Abstract class that represents a 3D scene for the ReactPhysics3D examples.
|
||||
|
|
Loading…
Reference in New Issue
Block a user