本文整理了Java中com.badlogic.gdx.math.Matrix4.getTranslation()
方法的一些代码示例,展示了Matrix4.getTranslation()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Matrix4.getTranslation()
方法的具体详情如下:
包路径:com.badlogic.gdx.math.Matrix4
类名称:Matrix4
方法名:getTranslation
暂无
代码示例来源:origin: libgdx/libgdx
private Vector3 getTranslation (Matrix4 worldTransform, Vector3 center, Vector3 output) {
if (center.isZero())
worldTransform.getTranslation(output);
else if (!worldTransform.hasRotationOrScaling())
worldTransform.getTranslation(output).add(center);
else
output.set(center).mul(worldTransform);
return output;
}
代码示例来源:origin: libgdx/libgdx
private Vector3 getTranslation (Matrix4 worldTransform, Vector3 center, Vector3 output) {
if (center.isZero())
worldTransform.getTranslation(output);
else if (!worldTransform.hasRotationOrScaling())
worldTransform.getTranslation(output).add(center);
else
output.set(center).mul(worldTransform);
return output;
}
代码示例来源:origin: libgdx/libgdx
/** Checks if entity is inside camera frustum.
*
* @param entity An entity
* @return True if entity is inside camera frustum */
private boolean entityInFrustum (BulletEntity entity) {
entity.modelInstance.transform.getTranslation(tmpV1);
return frustumCam.frustum.sphereInFrustum(tmpV1.add(entity.boundingBox.getCenter(tmpV2)), entity.boundingBoxRadius);
}
代码示例来源:origin: libgdx/libgdx
/** Renders a bounding box to the depth buffer. Does not need to be axis aligned, but will use the translation, rotation and
* scale from the matrix parameter.
*
* @param worldTransform World transform of the box to render.
* @param halfExt Half extents of the box. */
public void drawBB (Matrix4 worldTransform, Vector3 halfExt) {
Vector3 center = tmpV1.setZero();
setAABBVertices(center, halfExt, box);
worldTransform.getTranslation(center);
for (Vector3 vertex : box) {
vertex.rot(worldTransform);
vertex.add(center);
}
drawBox(box, Policy.DRAW);
}
代码示例来源:origin: libgdx/libgdx
public void renderSkeleton (final ModelInstance instance) {
shapeRenderer.setProjectionMatrix(cam.combined);
shapeRenderer.begin(ShapeType.Line);
for (Node node : instance.nodes) {
shapeRenderer.setColor(node.isAnimated ? Color.RED : Color.YELLOW);
node.globalTransform.getTranslation(tmpV);
shapeRenderer.box(tmpV.x, tmpV.y, tmpV.z, 0.5f, 0.5f, 0.5f);
for (Node child : node.getChildren())
renderSkeleton(tmpV, child);
}
shapeRenderer.end();
}
代码示例来源:origin: libgdx/libgdx
public void renderSkeleton (final Vector3 from, final Node node) {
final Vector3 pos = vectorPool.obtain();
node.globalTransform.getTranslation(pos);
shapeRenderer.setColor(node.isAnimated ? Color.RED : Color.YELLOW);
shapeRenderer.box(pos.x, pos.y, pos.z, 0.5f, 0.5f, 0.5f);
shapeRenderer.setColor(Color.WHITE);
shapeRenderer.line(from.x, from.y, from.z, pos.x, pos.y, pos.z);
for (Node child : node.getChildren())
renderSkeleton(pos, child);
vectorPool.free(pos);
}
代码示例来源:origin: libgdx/libgdx
/** Averages the given transform with this one and stores the result in this matrix. Translations and scales are lerped while
* rotations are slerped.
* @param other The other transform
* @param w Weight of this transform; weight of the other transform is (1 - w)
* @return This matrix for chaining */
public Matrix4 avg (Matrix4 other, float w) {
getScale(tmpVec);
other.getScale(tmpForward);
getRotation(quat);
other.getRotation(quat2);
getTranslation(tmpUp);
other.getTranslation(right);
setToScaling(tmpVec.scl(w).add(tmpForward.scl(1 - w)));
rotate(quat.slerp(quat2, 1 - w));
setTranslation(tmpUp.scl(w).add(right.scl(1 - w)));
return this;
}
代码示例来源:origin: libgdx/libgdx
/** Averages the given transform with this one and stores the result in this matrix. Translations and scales are lerped while
* rotations are slerped.
* @param other The other transform
* @param w Weight of this transform; weight of the other transform is (1 - w)
* @return This matrix for chaining */
public Matrix4 avg (Matrix4 other, float w) {
getScale(tmpVec);
other.getScale(tmpForward);
getRotation(quat);
other.getRotation(quat2);
getTranslation(tmpUp);
other.getTranslation(right);
setToScaling(tmpVec.scl(w).add(tmpForward.scl(1 - w)));
rotate(quat.slerp(quat2, 1 - w));
setTranslation(tmpUp.scl(w).add(right.scl(1 - w)));
return this;
}
代码示例来源:origin: libgdx/libgdx
@Override
public <T extends RenderableProvider> void analyze (BaseLight light, Camera camera, Iterable<T> renderableProviders) {
getRenderables(renderableProviders);
prepareCamera(camera);
bb1.inf();
for (Renderable renderable : renderables) {
renderable.worldTransform.getTranslation(tmpV);
tmpV.add(renderable.meshPart.center);
if (camera.frustum.sphereInFrustum(tmpV, renderable.meshPart.radius)) {
bb1.ext(tmpV, renderable.meshPart.radius);
}
}
computeResult(bb1, camera);
renderablesPool.flush();
renderables.clear();
}
代码示例来源:origin: libgdx/libgdx
/** Averages the given transforms with the given weights and stores the result in this matrix. Translations and scales are
* lerped while rotations are slerped. Does not destroy the data contained in t or w; Sum of w_i must be equal to 1, or
* unexpected results will occur.
* @param t List of transforms
* @param w List of weights
* @return This matrix for chaining */
public Matrix4 avg (Matrix4[] t, float[] w) {
tmpVec.set(t[0].getScale(tmpUp).scl(w[0]));
quat.set(t[0].getRotation(quat2).exp(w[0]));
tmpForward.set(t[0].getTranslation(tmpUp).scl(w[0]));
for (int i = 1; i < t.length; i++) {
tmpVec.add(t[i].getScale(tmpUp).scl(w[i]));
quat.mul(t[i].getRotation(quat2).exp(w[i]));
tmpForward.add(t[i].getTranslation(tmpUp).scl(w[i]));
}
quat.nor();
setToScaling(tmpVec);
rotate(quat);
setTranslation(tmpForward);
return this;
}
代码示例来源:origin: libgdx/libgdx
/** Averages the given transforms with the given weights and stores the result in this matrix. Translations and scales are
* lerped while rotations are slerped. Does not destroy the data contained in t or w; Sum of w_i must be equal to 1, or
* unexpected results will occur.
* @param t List of transforms
* @param w List of weights
* @return This matrix for chaining */
public Matrix4 avg (Matrix4[] t, float[] w) {
tmpVec.set(t[0].getScale(tmpUp).scl(w[0]));
quat.set(t[0].getRotation(quat2).exp(w[0]));
tmpForward.set(t[0].getTranslation(tmpUp).scl(w[0]));
for (int i = 1; i < t.length; i++) {
tmpVec.add(t[i].getScale(tmpUp).scl(w[i]));
quat.mul(t[i].getRotation(quat2).exp(w[i]));
tmpForward.add(t[i].getTranslation(tmpUp).scl(w[i]));
}
quat.nor();
setToScaling(tmpVec);
rotate(quat);
setTranslation(tmpForward);
return this;
}
代码示例来源:origin: libgdx/libgdx
/** Averages the given transforms and stores the result in this matrix. Translations and scales are lerped while rotations are
* slerped. Does not destroy the data contained in t.
* @param t List of transforms
* @return This matrix for chaining */
public Matrix4 avg (Matrix4[] t) {
final float w = 1.0f / t.length;
tmpVec.set(t[0].getScale(tmpUp).scl(w));
quat.set(t[0].getRotation(quat2).exp(w));
tmpForward.set(t[0].getTranslation(tmpUp).scl(w));
for (int i = 1; i < t.length; i++) {
tmpVec.add(t[i].getScale(tmpUp).scl(w));
quat.mul(t[i].getRotation(quat2).exp(w));
tmpForward.add(t[i].getTranslation(tmpUp).scl(w));
}
quat.nor();
setToScaling(tmpVec);
rotate(quat);
setTranslation(tmpForward);
return this;
}
代码示例来源:origin: libgdx/libgdx
/** Averages the given transforms and stores the result in this matrix. Translations and scales are lerped while rotations are
* slerped. Does not destroy the data contained in t.
* @param t List of transforms
* @return This matrix for chaining */
public Matrix4 avg (Matrix4[] t) {
final float w = 1.0f / t.length;
tmpVec.set(t[0].getScale(tmpUp).scl(w));
quat.set(t[0].getRotation(quat2).exp(w));
tmpForward.set(t[0].getTranslation(tmpUp).scl(w));
for (int i = 1; i < t.length; i++) {
tmpVec.add(t[i].getScale(tmpUp).scl(w));
quat.mul(t[i].getRotation(quat2).exp(w));
tmpForward.add(t[i].getTranslation(tmpUp).scl(w));
}
quat.nor();
setToScaling(tmpVec);
rotate(quat);
setTranslation(tmpForward);
return this;
}
代码示例来源:origin: libgdx/libgdx
instances[i].transform.getTranslation(tmp);
if (cam.frustum.sphereInFrustum(tmp, 1)) {
((ColorAttribute)instances[i].materials.get(0).get(ColorAttribute.Diffuse)).color.set(Color.WHITE);
batch.begin();
for (int i = 0; i < instances.length; i++) {
instances[i].transform.getTranslation(tmp);
cam.project(tmp);
if (tmp.z < 0) continue;
代码示例来源:origin: libgdx/libgdx
chassis.transform.getTranslation(camera.position);
tmpV.set(camera.position).sub(5, 0, 5).y = 0f;
camera.position.add(tmpV.nor().scl(-6f)).y = 4.f;
chassis.transform.getTranslation(tmpV);
camera.lookAt(tmpV);
camera.up.set(Vector3.Y);
代码示例来源:origin: libgdx/libgdx
@Override
public void set (BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) {
if (renderable.environment == null)
shader.program.setUniform3fv(shader.loc(inputID), ones, 0, ones.length);
else {
renderable.worldTransform.getTranslation(tmpV1);
if (combinedAttributes.has(ColorAttribute.AmbientLight))
cacheAmbientCubemap.set(((ColorAttribute)combinedAttributes.get(ColorAttribute.AmbientLight)).color);
if (combinedAttributes.has(DirectionalLightsAttribute.Type)) {
Array<DirectionalLight> lights = ((DirectionalLightsAttribute)combinedAttributes
.get(DirectionalLightsAttribute.Type)).lights;
for (int i = dirLightsOffset; i < lights.size; i++)
cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).direction);
}
if (combinedAttributes.has(PointLightsAttribute.Type)) {
Array<PointLight> lights = ((PointLightsAttribute)combinedAttributes.get(PointLightsAttribute.Type)).lights;
for (int i = pointLightsOffset; i < lights.size; i++)
cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).position, tmpV1, lights.get(i).intensity);
}
cacheAmbientCubemap.clamp();
shader.program.setUniform3fv(shader.loc(inputID), cacheAmbientCubemap.data, 0, cacheAmbientCubemap.data.length);
}
}
}
代码示例来源:origin: libgdx/libgdx
@Override
public void set (BaseShader shader, int inputID, Renderable renderable, Attributes combinedAttributes) {
if (renderable.environment == null)
shader.program.setUniform3fv(shader.loc(inputID), ones, 0, ones.length);
else {
renderable.worldTransform.getTranslation(tmpV1);
if (combinedAttributes.has(ColorAttribute.AmbientLight))
cacheAmbientCubemap.set(((ColorAttribute)combinedAttributes.get(ColorAttribute.AmbientLight)).color);
if (combinedAttributes.has(DirectionalLightsAttribute.Type)) {
Array<DirectionalLight> lights = ((DirectionalLightsAttribute)combinedAttributes
.get(DirectionalLightsAttribute.Type)).lights;
for (int i = dirLightsOffset; i < lights.size; i++)
cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).direction);
}
if (combinedAttributes.has(PointLightsAttribute.Type)) {
Array<PointLight> lights = ((PointLightsAttribute)combinedAttributes.get(PointLightsAttribute.Type)).lights;
for (int i = pointLightsOffset; i < lights.size; i++)
cacheAmbientCubemap.add(lights.get(i).color, lights.get(i).position, tmpV1, lights.get(i).intensity);
}
cacheAmbientCubemap.clamp();
shader.program.setUniform3fv(shader.loc(inputID), cacheAmbientCubemap.data, 0, cacheAmbientCubemap.data.length);
}
}
}
代码示例来源:origin: libgdx/libgdx
@Override
public void render () {
GL20 gl = Gdx.gl20;
gl.glClearColor(0, 0, 0, 0);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL20.GL_DEPTH_TEST);
cam.update();
modelBatch.begin(cam);
int visible = 0;
for (int i = 0; i < instances.length; i++) {
instances[i].transform.getTranslation(pos);
if (cam.frustum.sphereInFrustum(pos, 1)) {
((ColorAttribute)instances[i].materials.get(0).get(ColorAttribute.Diffuse)).color.set(Color.WHITE);
visible++;
} else {
((ColorAttribute)instances[i].materials.get(0).get(ColorAttribute.Diffuse)).color.set(Color.RED);
}
modelBatch.render(instances[i]);
}
modelBatch.end();
if (Gdx.input.isKeyPressed(Keys.A)) cam.rotate(20 * Gdx.graphics.getDeltaTime(), 0, 1, 0);
if (Gdx.input.isKeyPressed(Keys.D)) cam.rotate(-20 * Gdx.graphics.getDeltaTime(), 0, 1, 0);
gl.glDisable(GL20.GL_DEPTH_TEST);
batch.begin();
font.draw(batch, "visible: " + visible + "/100" + ", fps: " + Gdx.graphics.getFramesPerSecond(), 0, 20);
batch.end();
}
代码示例来源:origin: libgdx/libgdx
shadowLight.begin(character.transform.getTranslation(tmpVector), cam.direction);
shadowBatch.begin(shadowLight.getCamera());
if (character != null) shadowBatch.render(character);
代码示例来源:origin: com.badlogicgames.gdx/gdx
private Vector3 getTranslation (Matrix4 worldTransform, Vector3 center, Vector3 output) {
if (center.isZero())
worldTransform.getTranslation(output);
else if (!worldTransform.hasRotationOrScaling())
worldTransform.getTranslation(output).add(center);
else
output.set(center).mul(worldTransform);
return output;
}
内容来源于网络,如有侵权,请联系作者删除!