Articles of 线

透视投影 – 绘图线

所以我有点理解把3d点投射到2D平面上的math。 这只是一些简单的划分和乘法的距离。 然而,我似乎无法把我的头围绕从三维空间投影到二维平面上。 示范: 只是为了让这个更简单一些,我将会把2D投射到1d线上,因为对于3D到2D来说,这是相同的概念。 所以我的问题是,如果我想将AB线投影到具有设定焦距的观察窗口上,我可以将线(A和B)的两个点投影到透视线上,然后画线在观看窗口之间的那两个之间。 然而,当试图将线CD投影到线上时困难重重。 该线的第二点(D)在观察窗之后,因此不能投射到线上。 那么如何在透视窗口中绘制线条CD呢?

为什么当我运行我的游戏时,我的着色器的纹理变成未选中状态?

我想添加一个自定义材质到我在Unity中绘制的线(使用Vectrosity )。 我正在使用Unity内置的“不亮/纹理”着色器。 当我从我的资源目录中拖放纹理到我的着色器中的“纹理”插槽时,一切都看起来不错: 但是当我点击播放,纹理消失: 我的队伍并没有出现在我的比赛中 但是,如果在单击播放之后将纹理拖动到着色器的纹理槽,贴图看起来会“粘住”,而且我的行按预期呈现: 但是,一旦我停下来开始游戏,纹理再次消失。 为什么Unity在我的游戏开始时踢出了我的纹理? 我的纹理有问题吗? 我在控制台中看不到任何警告或错误。 我尝试了许多不同的纹理,他们都做同样的事情。 我正在使用Unity 5.6.1f1。

使用Bresenham线algorithm从每个角度绘制线条

我正在尝试重新创建一个这样的图像 …或者只是每个点 使用Bresenham线algorithm,但似乎无法做到这一点..我从我的计算得到的观点看起来不像一个像,从不同角度的输出是没有意义的。 我从中心(3,3)开始,想要以给定的半径以一定角度进行绘制。 angle: 1 13,19 bressenham: mark: 3,3 mark: 3,3 mark: 4,4 mark: 4,4 mark: 5,5 mark: 5,5 mark: 6,6 mark: 6,6 mark: 7,7 mark: 7,7 mark: 8,8 mark: 8,8 mark: 9,9 mark: 9,9 mark: 10,10 mark: 10,10 mark: 11,11 mark: 11,11 mark: 12,12 mark: 12,12 1319 angle: 2 -5,21 bressenham: mark: -5,3 […]

如何在三维网格上排列点,以便我们可以正确地将它们连接到线路循环中

我想重新创造一个尽可能接近X-Com的效果:敌人Unkown的移动范围反馈: … http://media1.gameinformer.com/imagefeed/screenshots/XCOMEnemyUnknown/insideufo.jpg 蓝线界定了士兵可以使用一个单一的行动到达的瓷砖。 我们也在我们的游戏中使用3D网格方法。 我们没有使用预先构建的引擎来开发这个function,所以我想要一些我不知道的algorithm,而不是一些引擎的function(除非有很好的文档logging)。 我们已经讨论过使用像quickhull这样的东西,但quickhull生成一个凸轮廓,而这个轮廓可以凹或凸。 任何想法或想法? 感谢您的所有input 编辑:是的,我们已经有可行走区域的“边缘”或最外面的瓷砖的瓷砖的中心。 我们不确定的是以下几点: 从绿色的中心,给出的点,我们可以画出红色和黄色的轮廓。 我们怎么知道哪一个是正确的? 我们需要什么数据? 最终编辑:我的团队中的一位程序员发现了一些对我们来说足够好的东西。 这与X-Com使用的输出不完全一样。 我们把由Dijkstra寻路algorithm提供给我们的整个瓷砖放在一组瓷砖上,并从我们可以保证的一个边缘开始。 我们定义了一个向前的方向和一个向这个方向的垂直向量。 方向vector是用于在瓦片之间行走的方向vector,并且垂直vector用于检查沿着方向必须旋转到的方向上是否存在相邻的瓦片。 如果没有一个指向有效的瓦片,我们旋转离开垂直向量。 随后的图片将会随之而来,以便我们可以更好地为任何想要达到类似效果的人解释它。

我如何绘制虚线或虚线?

我试图通过沿path放置单独的段(破折号)然后将它们分开来绘制虚线或虚线。 我唯一可以提出的algorithm给了我一个根据线的角度变化的短划线长度。 喜欢这个: private function createDashedLine(fromX:Float, fromY:Float, toX:Float, toY:Float):Sprite { var line = new Sprite(); var currentX = fromX; var currentY = fromY; var addX = (toX – fromX) * 0.0075; var addY = (toY – fromY) * 0.0075; line.graphics.lineStyle(1, 0xFFFFFF); var count = 0; // while line is not complete while (!lineAtDestination(fromX, fromY, toX, […]

如何创建激光redirect?

想想门户2,激光可以通过一个立方体,并根据该立方体的旋转,它将redirect它。 例子: 这是我几乎没有运作的代码。 它适用于一个立方体,我能够得到原始(源)激光打到任何“redirect”立方体,然后我可以投射线渲染器,并改变旋转。 问题出现了,当我尝试使用redirect激光打另一个redirect立方体,我不知道如何让这个代码工作多个立方体互相击中。 using UnityEngine; using System.Collections; public class outLaser : MonoBehaviour { public sourceLaser1 reference; //referring to another class that has the original (source) laser LineRenderer redirectLaser; RaycastHit redirectHit; void Awake() { redirectLaser = GetComponent<LineRenderer>(); } void Update() { if(reference.sourceHit.collider.gameObject == transform.parent.gameObject) { if(Physics.Raycast(transform.position, -transform.forward, out redirectHit, Mathf.Infinity)) { redirectLaser.enabled = true; […]

XNA 2D Spritesheet绘图渲染问题

我正在制作一个基于图块的游戏,使用一个包含所有图块的spritesheet。 每个瓷砖的大小为32×32像素。 主要的问题是:当我把图块绘制到屏幕上时,如果tile的位置x和y不是圆形的,或者在spriteBatch.Draw()方法(scale!= 1.0f)中激活了比例,我会得到一些相邻的行将spritesheet中的图块拼贴到当前的图块中。 我已经尝试将SamplerState设置为PointClamp,删除AntiAlias,但仍然不起作用。 在这里,我将显示一些testing的图像,我制作了一个testing精灵表(我做了一个9×9的精灵表,每个精灵大小为32×32,包含一个独特的纯色)。 testing: 使用的SpriteSheet: 已经尝试去除消除锯齿,将PointClamp设置为采样器状态,但仍然遇到这个问题,XNA一直在屏幕上绘制纹理的相邻像素的一部分。 我想要的是获得瓷砖纹理的正确区域(如在第一个testing中看到的那样,只得到黄色像素)。 我的问题是:有没有什么办法可以解决这个问题,不添加瓷砖间距或任何涉及瓷砖的修改? 也许禁用由XNA完成的纹理过滤,或类似的东西。

如何在图中find没有穿过墙壁的path?

我想知道如何在graphics中findpath,同时具有“双面”边缘。 考虑这种情况: 我有线段的列表。 这些代表了“墙壁”或者说在游戏中的不可逾越的边缘。 然后,我计划在下一步建立一个连接的graphics(在可能的情况下)。 我正试图确定在这一点上的可行性。 如果甚至有解决scheme(这应该在我看来)。 我不需要知道A *或其他algorithm本身,而是如何不穿过墙壁,如图B所示。任何想法? 我想知道如果我可以把段变成多边形(通过增加宽度)。 然后制作这些多边形的联合,然后将它们视为多边形。 但是我想知道是否有办法做到这一点没有这个麻烦。 另外我不确定我想要添加任何宽度的必要条款。

如何使线渲染线保持平坦?

我注意到,当我添加更多的顶点到线渲染线时,线扭曲并停止是一条平滑线。 .GIF在这里: http : //i.imgur.com/hRAhCXM.gif 所有的行都在同一个z级别,即使我删除了线条似乎扭曲的材料。 我不知道为什么这样做,或者如何去解决它,有什么建议?C#

如何计算两条线是朝向还是朝向?

给定描述2个线段的4个点,如何计算A线是朝向还是远离线B? 两条线具有固定的长度,并且可以测量为从x1 / y1到x2 / y2的距离。