本文整理汇总了C++中dGetIdentityMatrix函数的典型用法代码示例。如果您正苦于以下问题:C++ dGetIdentityMatrix函数的具体用法?C++ dGetIdentityMatrix怎么用?C++ dGetIdentityMatrix使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dGetIdentityMatrix函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: BuildRegularTetrahedra
void BuildRegularTetrahedra (DemoEntityManager* const scene, int materialID)
{
dFloat mass = 5.0f;
NewtonWorld* const world = scene->GetNewton();
dVector tetra[] = { dVector(-1.0f, 0.0f, -0.71f, 0.0f),
dVector(1.0f, 0.0f, -0.71f, 0.0f),
dVector(0.0f, -1.0f, 0.71f, 0.0f),
dVector(0.0f, 1.0f, 0.71f, 0.0f) };
NewtonMesh* const tetrahedra = NewtonMeshCreate(scene->GetNewton());
NewtonMeshBeginBuild(tetrahedra);
AddTetra (tetrahedra, 0, 1, 2, 3, tetra, 0);
NewtonMeshEndBuild(tetrahedra);
dMatrix aligmentUV(dGetIdentityMatrix());
int material = LoadTexture("smilli.tga");
NewtonMeshApplyBoxMapping (tetrahedra, material, material, material, &aligmentUV[0][0]);
NewtonMeshCalculateVertexNormals (tetrahedra, 60.0f * dDegreeToRad);
// make a deformable collision mesh
NewtonCollision* const deformableCollision = NewtonCreateDeformableSolid(world, tetrahedra, materialID);
//create a rigid body with a deformable mesh
m_body = CreateRigidBody (scene, mass, deformableCollision);
// create the soft body mesh
DemoMesh* const mesh = new TetrahedraSoftMesh(scene, tetrahedra, m_body);
SetMesh(mesh, dGetIdentityMatrix());
// do not forget to destroy this objects, else you get bad memory leaks.
mesh->Release ();
NewtonMeshDestroy (tetrahedra);
NewtonDestroyCollision(deformableCollision);
}
开发者ID:MADEAPPS,项目名称:newton-dynamics,代码行数:35,代码来源:SoftBodies.cpp
示例2: modelViewMatrix
void dPluginCamera::SetPerspectiveMatrix(dSceneRender* const render, int width, int height)
{
// set the perspective matrix
render->SetPerspectiveProjection(width, height, m_fov * 180.0f / 3.1416f, m_frontPlane, m_backPlane);
// calculate the same gluLookAt matrix
dMatrix modelViewMatrix(dGetIdentityMatrix());
modelViewMatrix[2] = m_matrix.m_front.Scale (-1.0f);
modelViewMatrix[0] = m_matrix.m_up.CrossProduct(modelViewMatrix[2]);
modelViewMatrix[1] = modelViewMatrix[2].CrossProduct(modelViewMatrix[0]);
modelViewMatrix[3] = m_matrix.m_posit;
modelViewMatrix = modelViewMatrix.Inverse();
// apply scale, zoom and pan
dMatrix zoomMatrix(dGetIdentityMatrix());
zoomMatrix[0][0] = D_PERSPECTIVE_PIXEL_TO_METERS_SCALE * m_zoom;
zoomMatrix[1][1] = D_PERSPECTIVE_PIXEL_TO_METERS_SCALE * m_zoom;
zoomMatrix[2][2] = D_PERSPECTIVE_PIXEL_TO_METERS_SCALE * m_zoom;
dMatrix panMatrix (dGetIdentityMatrix());
// use a pan sensitivity 0f 0.25f
dFloat panSensitivity = D_PANNING_SENSITIVITY;
panMatrix.m_posit = dVector(m_panX * panSensitivity, m_panY * panSensitivity, 0.0f, 1.0f);
dMatrix matrix (zoomMatrix * modelViewMatrix * panMatrix);
render->SetModelViewMatrix(matrix);
}
开发者ID:Hurleyworks,项目名称:newton-dynamics,代码行数:27,代码来源:dPluginCamera.cpp
示例3: SixAxisManipulators
void SixAxisManipulators(DemoEntityManager* const scene)
{
// load the sky box
scene->CreateSkyBox();
CreateLevelMesh(scene, "flatPlane.ngd", true);
dSixAxisManager* const robotManager = new dSixAxisManager(scene);
dMatrix origin(dYawMatrix(0.0f * dDegreeToRad));
dMatrix origin1(dYawMatrix(180.0f * dDegreeToRad));
origin.m_posit.m_z = -1.0f;
origin1.m_posit.m_z = 1.0f;
int count = 10;
count = 1;
origin = dGetIdentityMatrix();
origin.m_posit.m_x = 2.0f;
for (int i = 0; i < count; i++) {
robotManager->MakeKukaRobot(scene, origin);
//robotManager->MakeKukaRobot (scene, origin1);
origin.m_posit.m_x += 1.0f;
origin1.m_posit.m_x += 1.0f;
}
// origin.m_posit = dVector (-3.0f, 0.5f, 0.0f, 1.0f);
origin.m_posit = dVector(-2.0f, 0.5f, 0.0f, 1.0f);
scene->SetCameraMatrix(dGetIdentityMatrix(), origin.m_posit);
}
开发者ID:Hurleyworks,项目名称:newton-dynamics,代码行数:27,代码来源:SixAxisManipulators.cpp
示例4: LoadTetrahedraCube
void LoadTetrahedraCube(DemoEntityManager* const scene, int materialID)
{
dFloat mass = 5.0f;
NewtonWorld* const world = scene->GetNewton();
char name[2048];
dGetWorkingFileName ("box.tet", name);
NewtonMesh* const tetraCube = NewtonMeshLoadTetrahedraMesh(scene->GetNewton(), name);
dMatrix aligmentUV(dGetIdentityMatrix());
int material = LoadTexture("smilli.tga");
NewtonMeshApplyBoxMapping(tetraCube, material, material, material, &aligmentUV[0][0]);
NewtonMeshCalculateVertexNormals(tetraCube, 60.0f * dDegreeToRad);
// make a deformable collision mesh
NewtonCollision* const deformableCollision = NewtonCreateDeformableSolid(world, tetraCube, materialID);
//create a rigid body with a deformable mesh
m_body = CreateRigidBody(scene, mass, deformableCollision);
// create the soft body mesh
//m_mesh = new TetrahedraSoftMesh(tetraCube, m_body);
DemoMesh* const mesh = new TetrahedraSoftMesh(scene, tetraCube, m_body);
SetMesh(mesh, dGetIdentityMatrix());
// do not forget to destroy this objects, else you get bad memory leaks.
mesh->Release ();
NewtonDestroyCollision(deformableCollision);
NewtonMeshDestroy(tetraCube);
}
开发者ID:MADEAPPS,项目名称:newton-dynamics,代码行数:30,代码来源:SoftBodies.cpp
示例5: BasicCar
void BasicCar (DemoEntityManager* const scene)
{
// load the sky box
scene->CreateSkyBox();
CreateLevelMesh (scene, "flatPlane.ngd", 1);
// CreateHeightFieldTerrain (scene, 10, 8.0f, 5.0f, 0.2f, 200.0f, -50.0f);
dMatrix location (dGetIdentityMatrix());
location.m_posit = dVector (0.0f, 10.0f, 0.0f, 1.0f);
location.m_posit = FindFloor (scene->GetNewton(), location.m_posit, 100.0f);
location.m_posit.m_y += 2.0f;
NewtonWorld* const world = scene->GetNewton();
// create a vehicle controller manager
BasicCarControllerManager* const manager = new BasicCarControllerManager (world);
// load
basicCarParameters.m_differentialType = BasciCarParameters::m_RWD;
BasicCarEntity* const heavyVehicle = new BasicCarEntity (scene, manager, location, basicCarParameters);
heavyVehicle->BuidlBasicCar (basicCarParameters);
// set this vehicle as the player
manager->SetAsPlayer(heavyVehicle);
dMatrix camMatrix (manager->m_player->GetNextMatrix());
scene->SetCameraMouseLock (true);
scene->SetCameraMatrix(camMatrix, camMatrix.m_posit);
//
// dVector location (origin);
// location.m_x += 20.0f;
// location.m_z += 20.0f;
// location.m_posit.m_z += 4.0f;
int count = 1;
dMatrix shapeOffsetMatrix (dGetIdentityMatrix());
int defaultMaterialID = NewtonMaterialGetDefaultGroupID (scene->GetNewton());
dVector size (3.0f, 0.125f, 3.0f, 0.0f);
//AddPrimitiveArray(scene, 100.0f, location.m_posit, size, count, count, 5.0f, _BOX_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
size = dVector(1.0f, 0.5f, 1.0f, 0.0f);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _SPHERE_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _BOX_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _CAPSULE_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _CYLINDER_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _TAPERED_CAPSULE_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _TAPERED_CYLINDER_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _CHAMFER_CYLINDER_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _CONE_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _REGULAR_CONVEX_HULL_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// AddPrimitiveArray(scene, 10.0f, location.m_posit, size, count, count, 5.0f, _RANDOM_CONVEX_HULL_PRIMITIVE, defaultMaterialID, shapeOffsetMatrix);
// NewtonSerializeToFile (scene->GetNewton(), "C:/Users/Julio/Desktop/newton-dynamics/applications/media/xxxxx.bin");
}
开发者ID:Rick16bit,项目名称:newton-dynamics,代码行数:59,代码来源:BasicCar.cpp
示例6: ClosestDistance
// create physics scene
void ClosestDistance (DemoEntityManager* const scene)
{
scene->CreateSkyBox();
// customize the scene after loading
// set a user friction variable in the body for variable friction demos
// later this will be done using LUA script
NewtonWorld* const world = scene->GetNewton();
dMatrix offsetMatrix (dGetIdentityMatrix());
CreateLevelMesh (scene, "flatPlane.ngd", 1);
// CreateLevelMesh (scene, "playground.ngd", 0);
int materialID = NewtonMaterialGetDefaultGroupID (world);
// disable collision
// NewtonMaterialSetDefaultCollidable (world, materialID, materialID, 0);
// PrimitiveType castinShapeType = _SPHERE_PRIMITIVE;
// PrimitiveType castinShapeType = _BOX_PRIMITIVE;
// PrimitiveType castinShapeType = _CAPSULE_PRIMITIVE;
// PrimitiveType castinShapeType = _CYLINDER_PRIMITIVE;
// PrimitiveType castinShapeType = _CONE_PRIMITIVE;
// PrimitiveType castinShapeType = _TAPERED_CAPSULE_PRIMITIVE;
// PrimitiveType castinShapeType = _TAPERED_CYLINDER_PRIMITIVE;
// PrimitiveType castinShapeType = _CHAMFER_CYLINDER_PRIMITIVE;
// PrimitiveType castinShapeType = _RANDOM_CONVEX_HULL_PRIMITIVE;
// PrimitiveType castinShapeType = _REGULAR_CONVEX_HULL_PRIMITIVE;
PrimitiveType castinShapeType = _COMPOUND_CONVEX_CRUZ_PRIMITIVE;
// ClosestDistanceEntityManager* const parallelManager = new ClosestDistanceEntityManager (scene);
dClosestDistanceManager* const castManager = new dClosestDistanceManager (scene);
int count = 5;
// castManager->AddPrimitives (count, dVector ( 0, 0, 0), _SPHERE_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector ( 2, 0, 2), _BOX_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector ( 4, 0, 4), _CAPSULE_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector ( 8, 0, 8), _CYLINDER_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector ( 10, 0, 10), _CHAMFER_CYLINDER_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector (- 4, 0, -4), _CONE_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector (- 6, 0, -6), _TAPERED_CAPSULE_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector (- 8, 0, -8), _TAPERED_CYLINDER_PRIMITIVE, materialID, castinShapeType);
// castManager->AddPrimitives (count, dVector (-10, 0, -10), _REGULAR_CONVEX_HULL_PRIMITIVE, materialID, castinShapeType);
castManager->AddPrimitives (count, dVector (-12, 0, -12), _COMPOUND_CONVEX_CRUZ_PRIMITIVE, materialID, castinShapeType);
// place camera into position
//dMatrix camMatrix (dYawMatrix(90.0f * 3.1416f /180.0f));
dMatrix camMatrix (dGetIdentityMatrix());
dQuaternion rot (camMatrix);
dVector origin (-30.0f, 10.0f, 0.0f, 0.0f);
scene->SetCameraMatrix(rot, origin);
}
开发者ID:Magic73,项目名称:newton-dynamics,代码行数:57,代码来源:ClosestDistance.cpp
示例7: BuildJenga
static void BuildJenga (DemoEntityManager* const scene, dFloat mass, const dVector& origin, const dVector& size, int count)
{
// build a standard block stack of 20 * 3 boxes for a total of 60
NewtonWorld* const world = scene->GetNewton();
dVector blockBoxSize (0.8f, 0.5f, 0.8f * 3.0f);
blockBoxSize = blockBoxSize.Scale (1.0f);
// create the stack
dMatrix baseMatrix (dGetIdentityMatrix());
// for the elevation of the floor at the stack position
baseMatrix.m_posit.m_x = origin.m_x;
baseMatrix.m_posit.m_z = origin.m_z;
dFloat startElevation = 100.0f;
dVector floor (FindFloor (world, dVector (baseMatrix.m_posit.m_x, startElevation, baseMatrix.m_posit.m_z, 0.0f), 2.0f * startElevation));
baseMatrix.m_posit.m_y = floor.m_y + blockBoxSize.m_y / 2.0f;
// set realistic mass and inertia matrix for each block
mass = 5.0f;
// create a 90 degree rotation matrix
dMatrix rotMatrix (dYawMatrix (3.141592f * 0.5f));
// create a material to control collision with this objects
int defaultMaterialID;
defaultMaterialID = NewtonMaterialGetDefaultGroupID (world);
// separate a bit the block alone the horizontal direction
dFloat gap = 0.01f;
// create the shape and visual mesh as a common data to be re used
NewtonCollision* const collision = CreateConvexCollision (world, dGetIdentityMatrix(), blockBoxSize, _BOX_PRIMITIVE, defaultMaterialID);
DemoMesh* const geometry = new DemoMesh("box", collision, "wood_0.tga", "wood_0.tga", "wood_0.tga");
for (int i = 0; i < count; i ++) {
dMatrix matrix(baseMatrix);
matrix.m_posit -= matrix.m_front.Scale (blockBoxSize.m_x - gap);
for (int j = 0; j < 3; j ++) {
CreateSimpleSolid (scene, geometry, mass, matrix, collision, defaultMaterialID);
matrix.m_posit += matrix.m_front.Scale (blockBoxSize.m_x + gap);
}
baseMatrix = rotMatrix * baseMatrix;
baseMatrix.m_posit += matrix.m_up.Scale (blockBoxSize.m_y * 0.99f);
}
// do not forget to release the assets
geometry->Release();
NewtonDestroyCollision (collision);
}
开发者ID:redheli,项目名称:newton-dynamics,代码行数:53,代码来源:BasicStacking.cpp
示例8: PuckEntity
PuckEntity (DemoEntityManager* const scene, int materialID)
:DemoEntity (dGetIdentityMatrix(), NULL)
,m_launched(false)
{
scene->Append(this);
NewtonWorld* const world = scene->GetNewton();
dVector puckSize(WEIGHT_DIAMETER, WEIGHT_HEIGHT, 0.0f, 0.0f);
// create the shape and visual mesh as a common data to be re used
NewtonCollision* const collision = CreateConvexCollision (world, dGetIdentityMatrix(), puckSize, _CYLINDER_PRIMITIVE, materialID);
// correction: make the puck an upright cylinder, this makes everything simpler
dMatrix collisionAligmentMatrix (dRollMatrix(3.141592f/2.0f));
NewtonCollisionSetMatrix(collision, &collisionAligmentMatrix[0][0]);
DemoMesh* const geometry = new DemoMesh("cylinder_1", collision, "smilli.tga", "smilli.tga", "smilli.tga");
//dMatrix matrix = dRollMatrix(3.141592f/2.0f);
dMatrix matrix (dGetIdentityMatrix());
matrix.m_posit.m_x = -TABLE_LENGTH*0.5f+WEIGHT_DIAMETER;
matrix.m_posit.m_z = -11.8f;
//matrix.m_posit.m_z += 4.0f;
matrix.m_posit.m_y = 5.0f;
m_puckBody = CreateSimpleSolid (scene, geometry, WEIGHT_MASS, matrix, collision, materialID);
// Set moment of inertia
// correction: this is deprecated, NewtonBodySetMassProperties produce the exact result
//dVector I;
//dFloat Mass = WEIGHT_MASS;
//dFloat Radius = WEIGHT_RADIUS;
//dFloat Height = WEIGHT_HEIGHT;
//I.m_x = I.m_z = Mass*(3.0f*Radius*Radius+Height*Height)/12.0f;
//I.m_y = Mass*Radius*Radius/2.0f;
//NewtonBodySetMassMatrix(gPuckBody,Mass, I.m_x, I.m_y, I.m_z);
NewtonBodySetMassProperties(m_puckBody, WEIGHT_MASS, NewtonBodyGetCollision(m_puckBody));
NewtonBodySetMaterialGroupID(m_puckBody, materialID);
// remember to make continuous collision work with auto sleep mode, right now this is no working
NewtonBodySetContinuousCollisionMode(m_puckBody, 1);
NewtonBodySetAutoSleep(m_puckBody, 1);
// Set callbacks
NewtonBodySetForceAndTorqueCallback(m_puckBody, NewtonRigidBodySetForceCB);
// do not forget to release the assets
geometry->Release();
NewtonDestroyCollision (collision);
}
开发者ID:LaKraven,项目名称:newton-dynamics,代码行数:53,代码来源:PuckSlide.cpp
示例9: LoadPlayGroundScene
static void LoadPlayGroundScene(DemoEntityManager* const scene, TriggerManager* const triggerManager)
{
NewtonWorld* const world = scene->GetNewton();
// CreateLevelMesh (scene, "flatPlane.ngd", true);
// return;
// make the body with a dummy null collision, so that we can use for attaching world objects
dMatrix matrix (dGetIdentityMatrix());
NewtonCollision* const dommyCollision = NewtonCreateNull(world);
NewtonBody* const playGroundBody = NewtonCreateDynamicBody (world, dommyCollision, &matrix[0][0]);
NewtonDestroyCollision (dommyCollision);
// use a multi shape static scene collision
NewtonCollision* const sceneCollision = NewtonCreateSceneCollision (world, 0);
// start adding shapes to this scene collisions
NewtonSceneCollisionBeginAddRemove (sceneCollision);
// populate the scene collision
{
// load a flat floor
LoadFloor(scene, sceneCollision);
// load a slide platform
dMatrix slideMatrix(dGetIdentityMatrix());
slideMatrix.m_posit.m_x += 80.0f;
slideMatrix.m_posit.m_z = -20.0f;
//LoadSlide(scene, triggerManager, sceneCollision, "slide.ngd", slideMatrix, playGroundBody);
LoadFerryBridge(scene, triggerManager, sceneCollision, "platformBridge.ngd", slideMatrix, playGroundBody);
// load another hanging bridge
dMatrix bridgeMatrix(dGetIdentityMatrix());
bridgeMatrix.m_posit.m_x += 40.0f;
LoadHangingBridge(scene, triggerManager, sceneCollision, "hangingBridge.ngd", bridgeMatrix, playGroundBody);
// load another ferry bridge
bridgeMatrix.m_posit.m_z += 20.0f;
LoadFerryBridge(scene, triggerManager, sceneCollision, "platformBridge.ngd", bridgeMatrix, playGroundBody);
}
// finalize adding shapes to this scene collisions
NewtonSceneCollisionEndAddRemove (sceneCollision);
// attach this collision to the playground Body
NewtonBodySetCollision(playGroundBody, sceneCollision);
// set the reference to the visual
//NewtonBodySetUserData(level, visualMesh);
// do not forget to release the collision
NewtonDestroyCollision (sceneCollision);
}
开发者ID:Magic73,项目名称:newton-dynamics,代码行数:53,代码来源:AdvancedPlayerController.cpp
示例10: BuildPyramid
static void BuildPyramid (DemoEntityManager* const scene, dFloat mass, const dVector& origin, const dVector& size, int count, PrimitiveType type, const dMatrix& shapeMatrix = dGetIdentityMatrix())
{
dMatrix matrix (dGetIdentityMatrix());
matrix.m_posit = origin;
matrix.m_posit.m_w = 1.0f;
// create the shape and visual mesh as a common data to be re used
NewtonWorld* const world = scene->GetNewton();
int defaultMaterialID;
defaultMaterialID = NewtonMaterialGetDefaultGroupID (world);
//dMatrix shapeMatrix (dRollMatrix(3.141692f * 0.5f));
NewtonCollision* const collision = CreateConvexCollision (world, shapeMatrix, size, type, defaultMaterialID);
DemoMesh* const geometry = new DemoMesh("cylinder_1", collision, "wood_4.tga", "wood_4.tga", "wood_1.tga");
//DemoMesh____* const geometry = new DemoMesh____("cylinder_1", collision, "smilli.tga", "smilli.tga", "smilli.tga");
// matrix = dRollMatrix(3.141592f/2.0f);
dFloat startElevation = 100.0f;
dVector floor (FindFloor (world, dVector (matrix.m_posit.m_x, startElevation, matrix.m_posit.m_z, 0.0f), 2.0f * startElevation));
matrix.m_posit.m_y = floor.m_y + size.m_y / 2.0f;
// get the dimension from shape itself
dVector minP;
dVector maxP;
CalculateAABB (collision, dGetIdentityMatrix(), minP, maxP);
//dFloat stepz = size.m_z + 0.01f;
dFloat stepz = maxP.m_z - minP.m_z + 0.01f;
dFloat stepy = maxP.m_y - minP.m_y;
float y0 = matrix.m_posit.m_y + stepy / 2.0f;
float z0 = matrix.m_posit.m_z - stepz * count / 2;
matrix.m_posit.m_y = y0;
for (int j = 0; j < count; j ++) {
matrix.m_posit.m_z = z0;
for (int i = 0; i < (count - j) ; i ++) {
CreateSimpleSolid (scene, geometry, mass, matrix, collision, defaultMaterialID);
matrix.m_posit.m_z += stepz;
}
z0 += stepz * 0.5f;
matrix.m_posit.m_y += stepy;
}
// do not forget to release the assets
geometry->Release();
NewtonDestroyCollision (collision);
}
开发者ID:redheli,项目名称:newton-dynamics,代码行数:51,代码来源:BasicStacking.cpp
示例11: SimpleSoftBodyEntity
SimpleSoftBodyEntity(DemoEntityManager* const scene, const dVector& location)
:DemoEntity(dGetIdentityMatrix(), NULL)
,m_body(NULL)
{
dMatrix matrix (dGetIdentityMatrix());
matrix.m_posit.m_x = location.m_x;
matrix.m_posit.m_y = location.m_y;
matrix.m_posit.m_z = location.m_z;
ResetMatrix(*scene, matrix);
// add an new entity to the world
scene->Append(this);
}
开发者ID:MADEAPPS,项目名称:newton-dynamics,代码行数:14,代码来源:SoftBodies.cpp
示例12: ClosestDistanceEntity
ClosestDistanceEntity (DemoEntityManager* const scene, dMatrix& matrix, int materialID, PrimitiveType castingShapeType)
:DemoEntity (matrix, NULL)
,m_contactsCount(0)
{
NewtonWorld* const world = scene->GetNewton();
dVector size(1.0f, 1.0f, 1.0f, 0.0f);
m_castingShape = CreateConvexCollision (world, dGetIdentityMatrix(), size, castingShapeType, 0);
DemoMesh* const geometry = new DemoMesh("convexShape", m_castingShape, "smilli.tga", "smilli.tga", "smilli.tga");
SetMesh(geometry, dGetIdentityMatrix());
geometry->Release();
scene->Append(this);
}
开发者ID:Magic73,项目名称:newton-dynamics,代码行数:15,代码来源:ClosestDistance.cpp
示例13:
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
dCustomJoint::dCustomJoint ()
:dCustomAlloc()
,m_localMatrix0(dGetIdentityMatrix())
,m_localMatrix1(dGetIdentityMatrix())
,m_userData(NULL)
,m_body0(NULL)
,m_body1(NULL)
,m_joint(NULL)
,m_world(NULL)
,m_userDestructor(NULL)
,m_stiffness(1.0f)
,m_maxDof(0)
,m_autoDestroy(0)
{
}
开发者ID:fly-man-,项目名称:newton-dynamics,代码行数:18,代码来源:dCustomJoint.cpp
示例14: CreatePlaneCollision
static NewtonBody* CreatePlaneCollision (DemoEntityManager* const scene, const dVector& planeEquation)
{
NewtonCollision* const planeCollision = CreateInfinitePlane (scene->GetNewton(), planeEquation);
// create the the rigid body for
dMatrix matrix (dGetIdentityMatrix());
NewtonBody* const body = NewtonCreateDynamicBody(scene->GetNewton(), planeCollision, &matrix[0][0]);
// create a visual mesh
DemoMesh* const mesh = CreateVisualPlaneMesh (planeEquation, scene);
DemoEntity* const entity = new DemoEntity(matrix, NULL);
NewtonCollisionGetMatrix(planeCollision, &matrix[0][0]);
scene->Append (entity);
entity->SetMesh(mesh, matrix);
mesh->Release();
// save the pointer to the graphic object with the body.
NewtonBodySetUserData (body, entity);
// destroy the collision shape
NewtonDestroyCollision (planeCollision);
return body;
}
开发者ID:MADEAPPS,项目名称:newton-dynamics,代码行数:25,代码来源:UserStaticCollision.cpp
示例15: CreatCasterBody
void CreatCasterBody(dFloat location_x, dFloat location_z, PrimitiveType shapeType, int materialID)
{
NewtonWorld* const world = ((CustomControllerManager<dClosestDistanceRecord>*)GetManager())->GetWorld();
DemoEntityManager* const scene = (DemoEntityManager*)NewtonWorldGetUserData(world);
//dMatrix matrix (GetIdentityMatrix());
dMatrix matrix (dRollMatrix(3.141592f/2.0f));
matrix.m_posit.m_x = location_x;
matrix.m_posit.m_y = 2.0f;
matrix.m_posit.m_z = location_z;
// create the shape and visual mesh as a common data to be re used
dVector size(0.5f, 0.5f, 0.75f, 0.0f);
NewtonCollision* const collision = CreateConvexCollision (world, dGetIdentityMatrix(), size, shapeType, materialID);
// DemoMesh____* const geometry = new DemoMesh____("cylinder_1", collision, "wood_0.tga", "wood_0.tga", "wood_1.tga");
DemoMesh* const geometry = new DemoMesh("convexShape", collision, "smilli.tga", "smilli.tga", "smilli.tga");
m_body = CreateSimpleSolid (scene, geometry, 1.0f, matrix, collision, materialID);
// disable gravity and apply a force that only spin the body
//NewtonBodySetForceAndTorqueCallback(m_myBody, PhysicsSpinBody);
//NewtonBodySetAutoSleep (m_myBody, 0);
geometry->Release();
NewtonDestroyCollision (collision);
}
开发者ID:Magic73,项目名称:newton-dynamics,代码行数:27,代码来源:ClosestDistance.cpp
示例16: dGetIdentityMatrix
void dCustomTransformController::PostUpdate(dCustomTransformManager* const manager, dFloat timestep) const
{
if (m_calculateLocalTransform) {
dMatrix parentMatrixPool[128];
const dSkeletonBone* stackPool[128];
int stack = 1;
stackPool[0] = this;
parentMatrixPool[0] = dGetIdentityMatrix();
while (stack) {
dMatrix matrix;
stack--;
dMatrix parentMatrix(parentMatrixPool[stack]);
const dSkeletonBone* const bone = stackPool[stack];
NewtonBodyGetMatrix(bone->GetBody(), &matrix[0][0]);
manager->OnUpdateTransform(bone, matrix * parentMatrix * bone->GetBindMatrix());
parentMatrix = matrix.Inverse();
for (dList<dSkeletonBone>::dListNode* ptrNode = bone->GetFirst(); ptrNode; ptrNode = ptrNode->GetNext()) {
parentMatrixPool[stack] = parentMatrix;
stackPool[stack] = &ptrNode->GetInfo();
stack++;
}
}
}
}
开发者ID:MADEAPPS,项目名称:newton-dynamics,代码行数:30,代码来源:dCustomTransformManager.cpp
示例17: DynamicRagdoll
void DynamicRagdoll(DemoEntityManager* const scene)
{
// load the sky box
scene->CreateSkyBox();
CreateLevelMesh(scene, "flatPlane.ngd", true);
dDynamicRagdollManager* const manager = new dDynamicRagdollManager(scene);
NewtonWorld* const world = scene->GetNewton();
int defaultMaterialID = NewtonMaterialGetDefaultGroupID(world);
NewtonMaterialSetDefaultFriction(world, defaultMaterialID, defaultMaterialID, 1.0f, 1.0f);
NewtonMaterialSetDefaultElasticity(world, defaultMaterialID, defaultMaterialID, 0.0f);
dMatrix origin (dYawMatrix(0.0f * dDegreeToRad));
origin.m_posit.m_y = 2.0f;
manager->CreateRagdollExperiment_0(origin);
/*
// int count = 10;
// count = 1;
//origin = dGetIdentityMatrix();
origin.m_posit.m_x = 2.0f;
// origin.m_posit.m_y = 2.1f;
origin.m_posit.m_y = 3.0f;
for (int i = 0; i < count; i++) {
manager->CreateRagDoll(scene, origin);
//manager->CreateRagDoll (scene, origin1);
origin.m_posit.m_x += 1.0f;
}
*/
origin.m_posit.m_x = -3.0f;
origin.m_posit.m_y = 1.0f;
origin.m_posit.m_z = 0.0f;
scene->SetCameraMatrix(dGetIdentityMatrix(), origin.m_posit);
}
开发者ID:MADEAPPS,项目名称:newton-dynamics,代码行数:35,代码来源:DynamicRagdoll.cpp
示例18: CreateScaleStaticMesh
static void CreateScaleStaticMesh (DemoEntity* const entity, NewtonCollision* const collision, DemoEntityManager* const scene, const dMatrix& location, const dVector& scale)
{
// now make a scale version of the same model
// first Get The mesh and make a scale copy
DemoMesh* const mesh = (DemoMesh*)entity->GetMesh();
dAssert (mesh->IsType(DemoMesh::GetRttiType()));
// since the render does no handle scale, we will made a duplicated mesh with the scale baked in
DemoMesh* const scaledMesh = new DemoMesh (*mesh);
// now scale the vertex list
for (int i = 0 ; i < mesh->m_vertexCount; i ++) {
scaledMesh->m_vertex[i * 3 + 0] *= scale.m_x;
scaledMesh->m_vertex[i * 3 + 1] *= scale.m_y;
scaledMesh->m_vertex[i * 3 + 2] *= scale.m_z;
}
// re-optimize for render
scaledMesh->OptimizeForRender();
DemoEntity* const scaledEntity = new DemoEntity(location, NULL);
scene->Append (scaledEntity);
scaledEntity->SetMesh(scaledMesh, dGetIdentityMatrix());
scaledMesh->Release();
// now make a body with a scaled collision mesh
// note: the collision do not have to be destroyed because we did no create a new collision we are simple using an existing one
NewtonBody* const scaledBody = NewtonCreateDynamicBody(scene->GetNewton(), collision, &location[0][0]);
NewtonBodySetUserData(scaledBody, scaledEntity);
// apply the scale to the new body collision;
// // note: scaling a collision mesh does not updates the broadPhase, this function is a until that do update broad phase
NewtonBodySetCollisionScale (scaledBody, scale.m_x, scale.m_y, scale.m_z);
}
开发者ID:shybovycha,项目名称:newton-dynamics,代码行数:33,代码来源:ScaledCollision.cpp
示例19: CreateBackgroundBody
static dNewtonDynamicBody* CreateBackgroundBody(dNewton* const world)
{
// make a flat quad
dFloat points[4][3] =
{
{-100.0f, 0.0f, 100.0f},
{ 100.0f, 0.0f, 100.0f},
{ 100.0f, 0.0f, -100.0f},
{-100.0f, 0.0f, -100.0f},
};
// create a collision tree instance with collision mask 1
dNewtonCollisionMesh collision (world, 1);
// start building the collision mesh
collision.BeginFace();
// add the face one at a time
collision.AddFace (4, &points[0][0], 3 * sizeof (dFloat), 0);
// finish building the collision
collision.EndFace();
// create a body with a collision and locate at the identity matrix position
return new MyDynamicBody (world, 0, &collision, NULL, dGetIdentityMatrix());
}
开发者ID:Hurleyworks,项目名称:newton-dynamics,代码行数:26,代码来源:main.cpp
示例20: Finalize
void dVehicleChassis::Finalize()
{
dVector minP;
dVector maxP;
m_vehicle->CalculateNodeAABB(dGetIdentityMatrix(), minP, maxP);
const dList<dVehicleNode*>& children = m_vehicle->GetChildren();
for (dList<dVehicleNode*>::dListNode* tireNode = children.GetFirst(); tireNode; tireNode = tireNode->GetNext()) {
dVehicleVirtualTire* const tire = (dVehicleVirtualTire*)tireNode->GetInfo()->GetAsTire();
if (tire) {
dVector tireMinP;
dVector tireMaxP;
dMatrix tireMatrix(tire->GetHardpointMatrix(0.0f));
tire->CalculateNodeAABB(tireMatrix, tireMinP, tireMaxP);
minP = minP.Min (tireMinP);
maxP = maxP.Max (tireMaxP);
}
}
m_obbOrigin = (maxP + minP).Scale (0.5f);
m_obbSize = (maxP - minP).Scale (0.5f) + dVector (0.1f, 0.1f, 0.1f, 0.0f);
m_vehicle->RigidBodyToStates();
m_solver.Finalize(this);
}
开发者ID:hhyyrylainen,项目名称:newton-dynamics,代码行数:27,代码来源:dVehicleChassis.cpp
注:本文中的dGetIdentityMatrix函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论