当前位置: 首页>>代码示例>>Java>>正文


Java ConvexShape.calculateTemporalAabb方法代码示例

本文整理汇总了Java中com.bulletphysics.collision.shapes.ConvexShape.calculateTemporalAabb方法的典型用法代码示例。如果您正苦于以下问题:Java ConvexShape.calculateTemporalAabb方法的具体用法?Java ConvexShape.calculateTemporalAabb怎么用?Java ConvexShape.calculateTemporalAabb使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.bulletphysics.collision.shapes.ConvexShape的用法示例。


在下文中一共展示了ConvexShape.calculateTemporalAabb方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: convexSweepTest

import com.bulletphysics.collision.shapes.ConvexShape; //导入方法依赖的package包/类
public void convexSweepTest(ConvexShape castShape, Transform convexFromWorld, Transform convexToWorld, CollisionWorld.ConvexResultCallback resultCallback, float allowedCcdPenetration) {
	Stack stack = Stack.enter();
    Transform convexFromTrans = stack.allocTransform();
	Transform convexToTrans = stack.allocTransform();

	convexFromTrans.set(convexFromWorld);
	convexToTrans.set(convexToWorld);

	Vector3 castShapeAabbMin = stack.allocVector3();
	Vector3 castShapeAabbMax = stack.allocVector3();

	// compute AABB that encompasses angular movement
	{
		Vector3 linVel = stack.allocVector3();
		Vector3 angVel = stack.allocVector3();
		TransformUtil.calculateVelocity(convexFromTrans, convexToTrans, 1f, linVel, angVel);
		Transform R = stack.allocTransform();
		R.setIdentity();
		R.setRotation(convexFromTrans.getRotation(stack.allocQuaternion()));
		castShape.calculateTemporalAabb(R, linVel, angVel, 1f, castShapeAabbMin, castShapeAabbMax);
	}

	Transform tmpTrans = stack.allocTransform();

	// go over all objects, and if the ray intersects their aabb + cast shape aabb,
	// do a ray-shape query using convexCaster (CCD)
	for (int i=0; i<overlappingObjects.size(); i++) {
		CollisionObject collisionObject = overlappingObjects.getQuick(i);

		// only perform raycast if filterMask matches
		if (resultCallback.needsCollision(collisionObject.getBroadphaseHandle())) {
			//RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject();
			Vector3 collisionObjectAabbMin = stack.allocVector3();
			Vector3 collisionObjectAabbMax = stack.allocVector3();
			collisionObject.getCollisionShape().getAabb(collisionObject.getWorldTransform(tmpTrans), collisionObjectAabbMin, collisionObjectAabbMax);
			AabbUtil2.aabbExpand(collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax);
			float[] hitLambda = new float[]{1f}; // could use resultCallback.closestHitFraction, but needs testing
			Vector3 hitNormal = stack.allocVector3();
			if (AabbUtil2.rayAabb(convexFromWorld.origin, convexToWorld.origin, collisionObjectAabbMin, collisionObjectAabbMax, hitLambda, hitNormal)) {
				CollisionWorld.objectQuerySingle(castShape, convexFromTrans, convexToTrans,
				                                 collisionObject,
				                                 collisionObject.getCollisionShape(),
				                                 collisionObject.getWorldTransform(tmpTrans),
				                                 resultCallback,
				                                 allowedCcdPenetration);
			}
		}
	}
	stack.leave();
}
 
开发者ID:vbousquet,项目名称:libgdx-jbullet,代码行数:51,代码来源:GhostObject.java

示例2: convexSweepTest

import com.bulletphysics.collision.shapes.ConvexShape; //导入方法依赖的package包/类
/** convexTest performs a swept convex cast on all objects in the {@link CollisionWorld}, and calls the resultCallback This
 * allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback. */
public void convexSweepTest (ConvexShape castShape, Transform convexFromWorld, Transform convexToWorld,
	ConvexResultCallback resultCallback) {
	Stack stack = Stack.enter();
	Transform convexFromTrans = stack.allocTransform();
	Transform convexToTrans = stack.allocTransform();

	convexFromTrans.set(convexFromWorld);
	convexToTrans.set(convexToWorld);

	Vector3 castShapeAabbMin = stack.allocVector3();
	Vector3 castShapeAabbMax = stack.allocVector3();

	// Compute AABB that encompasses angular movement
	{
		Vector3 linVel = stack.allocVector3();
		Vector3 angVel = stack.allocVector3();
		TransformUtil.calculateVelocity(convexFromTrans, convexToTrans, 1f, linVel, angVel);
		Transform R = stack.allocTransform();
		R.setIdentity();
		R.setRotation(convexFromTrans.getRotation(stack.allocQuaternion()));
		castShape.calculateTemporalAabb(R, linVel, angVel, 1f, castShapeAabbMin, castShapeAabbMax);
	}

	Transform tmpTrans = stack.allocTransform();
	Vector3 collisionObjectAabbMin = stack.allocVector3();
	Vector3 collisionObjectAabbMax = stack.allocVector3();
	float[] hitLambda = new float[1];

	// go over all objects, and if the ray intersects their aabb + cast shape aabb,
	// do a ray-shape query using convexCaster (CCD)
	for (int i = 0; i < collisionObjects.size(); i++) {
		CollisionObject collisionObject = collisionObjects.getQuick(i);

		// only perform raycast if filterMask matches
		if (resultCallback.needsCollision(collisionObject.getBroadphaseHandle())) {
			// RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject();
			collisionObject.getWorldTransform(tmpTrans);
			collisionObject.getCollisionShape().getAabb(tmpTrans, collisionObjectAabbMin, collisionObjectAabbMax);
			AabbUtil2.aabbExpand(collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax);
			hitLambda[0] = 1f; // could use resultCallback.closestHitFraction, but needs testing
			Vector3 hitNormal = stack.allocVector3();
			if (AabbUtil2.rayAabb(convexFromWorld.origin, convexToWorld.origin, collisionObjectAabbMin, collisionObjectAabbMax,
				hitLambda, hitNormal)) {
				objectQuerySingle(castShape, convexFromTrans, convexToTrans, collisionObject, collisionObject.getCollisionShape(),
					tmpTrans, resultCallback, getDispatchInfo().allowedCcdPenetration);
			}
		}
	}
	stack.leave();
}
 
开发者ID:vbousquet,项目名称:libgdx-jbullet,代码行数:53,代码来源:CollisionWorld.java

示例3: convexSweepTest

import com.bulletphysics.collision.shapes.ConvexShape; //导入方法依赖的package包/类
public void convexSweepTest(ConvexShape castShape, Transform convexFromWorld, Transform convexToWorld, CollisionWorld.ConvexResultCallback resultCallback, float allowedCcdPenetration) {
	Transform convexFromTrans = Stack.alloc(Transform.class);
	Transform convexToTrans = Stack.alloc(Transform.class);

	convexFromTrans.set(convexFromWorld);
	convexToTrans.set(convexToWorld);

	Vector3f castShapeAabbMin = Stack.alloc(Vector3f.class);
	Vector3f castShapeAabbMax = Stack.alloc(Vector3f.class);

	// compute AABB that encompasses angular movement
	{
		Vector3f linVel = Stack.alloc(Vector3f.class);
		Vector3f angVel = Stack.alloc(Vector3f.class);
		TransformUtil.calculateVelocity(convexFromTrans, convexToTrans, 1f, linVel, angVel);
		Transform R = Stack.alloc(Transform.class);
		R.setIdentity();
		R.setRotation(convexFromTrans.getRotation(Stack.alloc(Quat4f.class)));
		castShape.calculateTemporalAabb(R, linVel, angVel, 1f, castShapeAabbMin, castShapeAabbMax);
	}

	Transform tmpTrans = Stack.alloc(Transform.class);

	// go over all objects, and if the ray intersects their aabb + cast shape aabb,
	// do a ray-shape query using convexCaster (CCD)
	for (int i=0; i<overlappingObjects.size(); i++) {
		CollisionObject collisionObject = overlappingObjects.getQuick(i);

		// only perform raycast if filterMask matches
		if (resultCallback.needsCollision(collisionObject.getBroadphaseHandle())) {
			//RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject();
			Vector3f collisionObjectAabbMin = Stack.alloc(Vector3f.class);
			Vector3f collisionObjectAabbMax = Stack.alloc(Vector3f.class);
			collisionObject.getCollisionShape().getAabb(collisionObject.getWorldTransform(tmpTrans), collisionObjectAabbMin, collisionObjectAabbMax);
			AabbUtil2.aabbExpand(collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax);
			float[] hitLambda = new float[]{1f}; // could use resultCallback.closestHitFraction, but needs testing
			Vector3f hitNormal = Stack.alloc(Vector3f.class);
			if (AabbUtil2.rayAabb(convexFromWorld.origin, convexToWorld.origin, collisionObjectAabbMin, collisionObjectAabbMax, hitLambda, hitNormal)) {
				CollisionWorld.objectQuerySingle(castShape, convexFromTrans, convexToTrans,
				                                 collisionObject,
				                                 collisionObject.getCollisionShape(),
				                                 collisionObject.getWorldTransform(tmpTrans),
				                                 resultCallback,
				                                 allowedCcdPenetration);
			}
		}
	}
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:49,代码来源:GhostObject.java

示例4: convexSweepTest

import com.bulletphysics.collision.shapes.ConvexShape; //导入方法依赖的package包/类
/**
 * convexTest performs a swept convex cast on all objects in the {@link CollisionWorld}, and calls the resultCallback
 * This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback.
 */
public void convexSweepTest(ConvexShape castShape, Transform convexFromWorld, Transform convexToWorld, ConvexResultCallback resultCallback) {
	Transform convexFromTrans = Stack.alloc(Transform.class);
	Transform convexToTrans = Stack.alloc(Transform.class);

	convexFromTrans.set(convexFromWorld);
	convexToTrans.set(convexToWorld);

	Vector3f castShapeAabbMin = Stack.alloc(Vector3f.class);
	Vector3f castShapeAabbMax = Stack.alloc(Vector3f.class);

	// Compute AABB that encompasses angular movement
	{
		Vector3f linVel = Stack.alloc(Vector3f.class);
		Vector3f angVel = Stack.alloc(Vector3f.class);
		TransformUtil.calculateVelocity(convexFromTrans, convexToTrans, 1f, linVel, angVel);
		Transform R = Stack.alloc(Transform.class);
		R.setIdentity();
		R.setRotation(convexFromTrans.getRotation(Stack.alloc(Quat4f.class)));
		castShape.calculateTemporalAabb(R, linVel, angVel, 1f, castShapeAabbMin, castShapeAabbMax);
	}

	Transform tmpTrans = Stack.alloc(Transform.class);
	Vector3f collisionObjectAabbMin = Stack.alloc(Vector3f.class);
	Vector3f collisionObjectAabbMax = Stack.alloc(Vector3f.class);
	float[] hitLambda = new float[1];

	// go over all objects, and if the ray intersects their aabb + cast shape aabb,
	// do a ray-shape query using convexCaster (CCD)
	for (int i = 0; i < collisionObjects.size(); i++) {
		CollisionObject collisionObject = collisionObjects.getQuick(i);

		// only perform raycast if filterMask matches
		if (resultCallback.needsCollision(collisionObject.getBroadphaseHandle())) {
			//RigidcollisionObject* collisionObject = ctrl->GetRigidcollisionObject();
			collisionObject.getWorldTransform(tmpTrans);
			collisionObject.getCollisionShape().getAabb(tmpTrans, collisionObjectAabbMin, collisionObjectAabbMax);
			AabbUtil2.aabbExpand(collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax);
			hitLambda[0] = 1f; // could use resultCallback.closestHitFraction, but needs testing
			Vector3f hitNormal = Stack.alloc(Vector3f.class);
			if (AabbUtil2.rayAabb(convexFromWorld.origin, convexToWorld.origin, collisionObjectAabbMin, collisionObjectAabbMax, hitLambda, hitNormal)) {
				objectQuerySingle(castShape, convexFromTrans, convexToTrans,
				                  collisionObject,
				                  collisionObject.getCollisionShape(),
				                  tmpTrans,
				                  resultCallback,
				                  getDispatchInfo().allowedCcdPenetration);
			}
		}
	}
}
 
开发者ID:warlockcodes,项目名称:Null-Engine,代码行数:55,代码来源:CollisionWorld.java


注:本文中的com.bulletphysics.collision.shapes.ConvexShape.calculateTemporalAabb方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。