首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道3D对象是否在VR中被查看

如何知道3D对象是否在VR中被查看
EN

Stack Overflow用户
提问于 2015-03-19 02:47:21
回答 1查看 551关注 0票数 2

我正在使用RajawaliVR库。

我已经添加了一个平面,并对其应用了纹理。知道我想知道我的物体何时被观察,这样我就可以触发一些事件。在RajawaliVR或google cardboad中有什么可以帮助我做到这一点的吗?

代码语言:javascript
复制
    Material cruiserMaterial = new Material();
    cruiserMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
    cruiserMaterial.setColorInfluence(0);
    cruiserMaterial.enableLighting(true);
    try {
        cruiserMaterial.addTexture(new Texture("spaceCruiserTex",
                R.drawable.image2));
    } catch (TextureException e) {
        e.printStackTrace();
    }

    Object3D leftPlane = new Plane(10f, 10f, 1, 1, 1);

    leftPlane.setMaterial(cruiserMaterial);
    leftPlane.setRotZ(90);

    Object3D container = new Object3D();
    container.addChild(leftPlane);
    container.setRotX(90);
    container.setRotY(90);
    container.setRotZ(90);
    container.setZ(-20);

    getCurrentScene().addChild(container);
EN

回答 1

Stack Overflow用户

发布于 2015-03-19 16:03:46

只需将此代码放入渲染器主循环(OnDrawFrame)中,使用对象迭代列表并将对象作为参数传递即可。如果您当前正在查看一个对象,则该方法将返回true。

代码语言:javascript
复制
private static final float YAW_LIMIT = 0.12f;
private static final float PITCH_LIMIT = 0.12f;

/**
 * Check if user is looking at object by calculating where the object is in eye-space.
 *
 * @return true if the user is looking at the object.
 */
private boolean isLookingAtObject(WorldObject object) {
    float[] initVec = { 0, 0, 0, 1.0f };
    float[] objPositionVec = new float[4];

    // Convert object space to camera space. Use the headView from onNewFrame.
    Matrix.multiplyMM(mModelView, 0, this.getHeadViewMatrix(), 0, object.getModel().getModelMatrix().getFloatValues(), 0);
    Matrix.multiplyMV(objPositionVec, 0, mModelView, 0, initVec, 0);

    float pitch = (float) Math.atan2(objPositionVec[1], -objPositionVec[2]);
    float yaw = (float) Math.atan2(objPositionVec[0], -objPositionVec[2]);

    return Math.abs(pitch) < PITCH_LIMIT && Math.abs(yaw) < YAW_LIMIT;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29130284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档