Articles of 边界框

如何放置一个对象,使其不与场景中的对象重叠?

在我的游戏中,用户必须点击一个点放置一个对象(网格)。 我可以投射光线,find对象可以被翻译的水平点,然后附加到rootNode来显示它。 但是,问题是,如果用户点击太靠近另一个对象/ scene_wall,要放置的对象,将运行到它。 我怎样才能防止呢?

如何获得一个盒子内的所有点?

获得边界框内所有点的最快方法是什么? 如果我有一个ArrayList<Point> ,他们没有映射到坐标,我必须循环通过每个点,看看它是否在这些边界? 有更快的方法吗?

计算两个刚体或OOB之间的近似距离

是否有任何简单的方法来获得两个OOB之间的距离? 我search周围,人们谈论GJKalgorithm ,但是我没有看到它返回两个凸起物体之间的距离,即使他们没有碰撞。 我不需要确切的,但只是球体检查是不能接受的在我的情况。 有任何想法吗?

如何在三维像素网格中的对象之间获得逼真的滑动接触?

我在我的游戏中有一个三维网格的体素。 实体四处走动,用简单的物理学将它们表示为一个与速度,质量和加速度一致的轴alignment边界框。 我正在做碰撞解决方法是相当简单的。 这是一些伪代码: function ResolveCollisions() // For each voxel that could intersect the bounding box… foreach (Voxel neighbor in VoxelGrid.GetVoxelsIntersecting(this.bounds)) // Check a collision between the voxel and the bounding box if (neighbor.Collides(this.bounds)) ResolveCollision(neighbor, bounds); function ResolveCollision(Voxel neighbor, BoundingBox bounds) // Compute the contact normal and penetration distance between the two // boxes. [Vector3 […]

OpenGL 3.3+边界卷只是部分画出来的

我正在试图建立一个小的debugging视图,因为我打算稍后实施遮挡查询。 对于那些,我写了代码来确定我想要运行遮挡查询的VAO的“极坐标”。 然后我想使用的坐标来建立一个包含要testing的形状的立方体(边界体积)。 目前,我正在使用一个简单的三角形作为testing形状。 据我testing,极端的坐标似乎是正确的。 根据这些坐标,我继续建立一个立方体所需的点。 当然,我不想用36个值来摆弄,所以我想用仅有8个点的索引来绘制立方体。 到目前为止这么好,但是我遇到了一个问题:只有三分之一的立方体正在被绘制。 在这里我的代码来设置顶点: //The coordinates for the triangle shape verticesVector.push_back(-0.4f); verticesVector.push_back(0.1f); verticesVector.push_back(0.0f); verticesVector.push_back(0.4f); verticesVector.push_back(0.1f); verticesVector.push_back(0.0f); verticesVector.push_back(0.0f); verticesVector.push_back(0.7f); verticesVector.push_back(0.3f); //The colors for the triangle shape colorsVector.push_back(1.0f); colorsVector.push_back(0.0f); colorsVector.push_back(0.0f); colorsVector.push_back(0.0f); colorsVector.push_back(1.0f); colorsVector.push_back(0.0f); colorsVector.push_back(0.0f); colorsVector.push_back(0.0f); colorsVector.push_back(1.0f); glGenVertexArrays(1, &vertexArrayObject); glGenBuffers(1, &vertexBuffer); glGenBuffers(1, &colorBuffer); glBindVertexArray(vertexArrayObject); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); glBufferData(GL_ARRAY_BUFFER, 9 * sizeof(float), &verticesVector.front(), GL_STATIC_DRAW); glEnableVertexAttribArray(0); […]

XNA / MonoGame两个盒子之间的碰撞不能按预期工作

我有以下问题:我有两个GameObjects(一个是静态的,另一个是玩家)。 它们都有一个围绕它们的BoundingBox,还有一个包含更多的BoundingBoxes的List,用于更详细的碰撞检测。 玩家移动时使用下面的代码: /// <summary> /// Checks if this Game Object blocks the specific boundingbox. /// </summary> /// <param name="box">Box.</param> public virtual bool Blocks(BoundingBox box) { if (BoundingBoxes.Count.Equals(0)) { return !(this.SurroundBox.Contains(box) == ContainmentType.Disjoint); } bool blocked = false; BoundingBoxes.ForEach(b => { if (b.Contains(box) != ContainmentType.Disjoint) blocked = true; }); return blocked; } /// <summary> /// […]

碰撞检测和边界框创建

我正在尝试创建边界框。 我的目标不是用x,y和z坐标来创建它们。 但是,我会加载一个模型或者渲染一个形状 – 比如飞机。 那么algorithm应该能够在它周围创建有效的边界框。 我在编写opengl。 你能帮我解决吗?

为什么这个碰撞检测和parsing代码只适用于一方?

我的碰撞检测有点麻烦。 它只适用于正确的一面,也就是说,如果我从任何一方进入瓷砖,它会把我带到右边。 这是我的代码: const float spriteWidth = 5.0f; const float spriteHeight = 14.0f; float x = position.X; float y = position.Y; if (bounds.Intersects(tileBounds)) { if ((x + spriteWidth) > tileBounds.Left) position.X = tileBounds.Left – 5; if (x < tileBounds.Right) position.X = tileBounds.Right; if ((y + spriteHeight) < tileBounds.Bottom) position.Y = tileBounds.Bottom; if (y > tileBounds.Top) […]

在列表XNA 4.0中的每个项目周围创建一个边界框

我曾经问过类似的问题,除了我更有经验,对XNA有更多的了解。 每当你按下RightTrigger,我都有子弹射击。 虽然在列表中的每个项目符号周围都创建了边框,但我遇到了麻烦。 我想拥有这个,所以你可以射击这个男人,当他被击中的时候,他将会死亡,除了某些原因,没有包围盒。 我现在已经更新了这个,因为我放弃了射击游戏之后在平台游戏中尝试同样的方法,因为我放弃了它,因为我无法获得碰撞检测权。 现在我再次尝试这种方法,有麻烦。 事情是,它确实有效,但只在最后添加到列表中。 以下是Game1类中碰撞检测的代码: 老代码(DISREGARD) public bool hitBullet() { foreach (Bullets bullet in bullets.bulletAmm) { bulletRect = new Rectangle( (int)bullet.position.X, (int)bullet.position.Y, bullet.size.X, bullet.size.Y); manRectangle = new Rectangle( (int)man.position.X, (int)man.position.Y, man.pistolTexture.Width, man.pistolTexture.Height); } return bulletRect.Intersects(manRectangle); } 新代码(注意) public bool HitGround() { foreach (Ground newGround in ground.groundAmmount) { groundRectangle = new Rectangle( (int)newGround.position.X, […]

是否有一个边界卷类的testing框架?

这可能是一个长镜头,但是有没有一个小框架可以testing自定义边界类和其他碰撞对象? (例如在射线,球体和AABB之间)