精华内容
下载资源
问答
  • 相对于任意平面镜像变换矩阵

    千次阅读 2012-09-13 10:14:44
    中的v代表将要变换的点、v'是v相对于平面镜像变换后的点、n是平面的法向量,在讨论中,我们始终假设n为单位向量、k是自v到该平面的最短有向距离、q是平面上距离点v最近的点、d是原点到平面的最短有向距离。...

    本文将讨论任意点v相对于某个平面镜像变换后的点v'的推导过程。

    首先见下图:

    图画的不好,大家将就看哈^-^!

    图中的v代表将要变换的点、v'是v相对于平面镜像变换后的点、n是平面的法向量,在讨论中,我们始终假设n为单位向量、k是自v到该平面的最短有向距离、q是平面上距离点v最近的点、d是原点到平面的最短有向距离。

    根据向量加法的几何意义,我们知道

    同样的,我们可以知道。然后,把上面求出的q值代入该公式,我们得到

    那么现在,我们就面临这样的问题,k怎么求呢?

    首先,我们在图中创建个直角三角形,如图:

    此时,我们可以发现。同时,为什么是-d呢,因为原点位于平面的负方向,所以d是小于0的,而求b的长度,要取d的长度,即-d。此时,合并2个公式,我们就求得了。此时,把k的值代入上述公式,我们得到了

    如此,我们便得到了v'与v的关系表达式,展开看下会更明显:

    现在,把它写成矩阵形式,我们便得到了相对于任意平面的镜像变换矩阵:

    以下为详细的推导出矩阵形式(add 草原Song)


    展开全文
  • 平面镜反射是一种常用的实时渲染效果,且在许多游戏中都可以见到它的身影。 通常游戏中实现实时反射的方法有如下几种: 1.使用cubemap或预先烘焙反射探针 2.平面镜反射 3。屏幕空间反射(SSR) 三种方式进行...

    平面镜反射是一种常用的实时渲染效果,且在许多游戏中都可以见到它的身影。



    通常游戏中实现实时反射的方法有如下几种:

    1.使用cubemap或预先烘焙反射探针

    2.平面镜反射

    3。屏幕空间反射(SSR)


    三种方式进行比较,使用cubemap或反射探针可以用在反射物体不要求实时更新或变换的情况,且可以用在非平面物体上,如金属材质对天空的反射,或对一些静态场景物件的反射等。而屏幕空间反射虽然可以做实时更新反射物件,且也可以用在非平面物体上,但其性能要求也是最高的。相比之下,平面镜反射尽管在介质上仅局限于平面物体,但其可以做到反射物体的实时更新和变换,效果和性能都不错。


    本文主要介绍平面镜反射的实现方式。

    考虑到平面镜反射的实现的主要难点集中在相机矩阵的计算,因此分成两篇文章:

    【图形与渲染】相机平面镜反射与斜裁剪矩阵(上)

    【图形与渲染】相机平面镜反射与斜裁剪矩阵(下)


    实现平面镜反射的主要原理如下:

    1.根据已知平面,计算出该平面的镜像矩阵

    2.对当前摄像机进行拷贝,得到一个新的相机,并对该相机使用镜像矩阵变换到镜像位置

    3.根据平面向量计算镜像相机的斜裁剪矩阵,以裁剪平面负方向的不可视区域

    4.渲染镜像相机得到RenderTexture并投影到平面的材质shader,在shader中计算投影坐标最终得到镜面反射效果


    第一篇文章首先介绍镜像矩阵的计算:


    首先考虑以下情况:

    假设存在平面P=<n,d>,其法线为n,其中d=-n·p,p表示平面上的任意一点

    在平面的正方向存在点Q,要求计算点Q相对于平面P镜像后的坐标Q’。



    可知向量Q’Q垂直于平面,即与法线n同向,假设Q到平面P的垂直距离为k,则有Q=Q’+2*k*n/|n|。


    即Q’=Q-2*k*n/|n|


    接下来就需要求点Q到平面的距离k


    假设平面上存在任意点S=(x0,y0,z0):


    则有 (Q-S)·n =|Q-S||n|cosθ

    其中cosθ可由k和Q到S的距离求得:

    cosθ = k/|Q-S|

    因此上述公式转换为(Q-S)·n=|n|*k


    由于点S为平面上的任意一点,因此需要满足S·n=-d,所以上述公式还可以转换为Q·n+d=|n|*k,

    最后得到点Q到平面的距离k = (Q·n+d)/|n|


    结合以上结果,可以得到镜像点Q’的坐标:

    Q’=Q-2*n/|n|*((Q·n+d)/|n|)


    为了便于计算,我们只考虑法线n为单位向量的情况,则上述公式变为:

    Q’=Q-2*n*(Q·n+d)


    分解上述结果,最终得到点Q’坐标的各个分量如下:


    Q’x = (1-2*nx*nx)*Qx-2*nx*ny*Qy-2*nx*nz*Qz-2*nx*d

    Q’y = -2*nx*ny*Qx+(1-2*ny*ny)*Qy-2*ny*nz*Qz-2*ny*d

    Q’z = -2*nx*nz*Qx-2*ny*nz*Qy+(1-2*nz*nz)*Qz-2*nz*d


    根据以上信息即可求得镜面反射矩阵


    在unity中的实现:

    void OnWillRenderObject()
    {
        if (m_IsRenderering)
            return;
        m_IsRenderering = true;
        m_MirrorCamera.CopyFrom(camera);
        m_MirrorCamera.targetTexture = m_RenderTexture;
         
        //计算平面向量:注意这里使用的平面模型为unity引擎自带的平面,其法线方向为模型的up轴方向,如果考虑使用其它平面模型,需要注意平面的法线朝向
        m_Plane = new Vector4(plane.transform.up.x, plane.transform.up.y, plane.transform.up.z, -Vector3.Dot(plane.transform.up, plane.transform.position));
     
        //将计算得到的镜像矩阵应用到镜像摄像机
        m_MirrorCamera.worldToCameraMatrix = camera.worldToCameraMatrix * ReflectMatrix(m_Plane);
             
        //注意当相机镜像后,其渲染的模型的顶点绕序也会镜像,需要将背面裁剪设置为正面裁剪,渲染结束后再修改回来
        GL.invertCulling = true;
        m_MirrorCamera.Render();
        GL.invertCulling = false;
        m_IsRenderering = false;
    }
     
    private Matrix4x4 ReflectMatrix(Vector4 plane)
    {
        Matrix4x4 m = default(Matrix4x4);
        m.m00 = -2*plane.x*plane.x + 1;
        m.m01 = -2 * plane.x * plane.y;
        m.m02 = -2 * plane.x * plane.z;
        m.m03 = -2 * plane.x * plane.w;
     
        m.m10 = -2 * plane.x * plane.y;
        m.m11 = -2 * plane.y * plane.y + 1;
        m.m12 = -2 * plane.y * plane.z;
        m.m13 = -2 * plane.y * plane.w;
     
        m.m20 = -2 * plane.z * plane.x;
        m.m21 = -2 * plane.z * plane.y;
        m.m22 = -2 * plane.z * plane.z + 1;
        m.m23 = -2 * plane.z * plane.w;
     
        m.m30 = 0; m.m31 = 0;
        m.m32 = 0; m.m33 = 1;
        return m;
    }

    最终渲染效果如图:



    此时对于位于平面以下的物体部分不会再被渲染到反射贴图中了。


    此时的结果几乎看不出有什么问题,但仔细考虑如下情况:



    当我们镜像相机C的到相机C’后,相机C’的视锥体裁剪区域为A+B,而实际上B区域位于平面以下,应该不属于被反射的部分,实际应该只能渲染A区域,因此如果上述效果中出现位于平面以下的部分,则渲染即会出现错误:




    这种情况就需要使用平面P来计算斜裁剪矩阵了,详细内容请参考下一篇文章:


    【图形与渲染】相机平面镜反射与斜裁剪矩阵(下)



    更多内容请浏览我的博客原文:http://www.lsngo.net/2018/01/07/graphics_mirrorcamera_1/




    展开全文
  • 单元平面图测验题1. 用MIRROR命令镜像复制一个物体时必须事先画好对称轴。( )2. 镜像指令所复制图形的对称线的位置是___。3. 镜像文本要保持正显,那么其相关变量MIRRTEXT设置为___。4. 绘制梯井和扶手图形,并将...

    单元平面图测验题

    课程地址

    1. 用MIRROR命令镜像复制一个物体时必须事先画好对称轴。( )

    • ×

    2. 镜像指令所复制图形的对称线的位置是___。

    • 任意的
    • 水平的
    • 垂直的
    • 水平或垂直的

    3. 镜像文本要保持正显,那么其相关变量MIRRTEXT设置为___。

    • 0
    • 1
    • 2
    • 4

    4. 绘制梯井和扶手图形,并将图形精确定位在楼梯间,综合运用___指令。(多选题)

    • 矩形rec
    • 圆弧A
    • 偏移O
    • 移动M

    5. 在边界存在的情况下可以用修剪trim实现打断指令break的编辑效果。( )

    • ×

    6. 用打断Break指令打断开一个圆时,断开部分是自第一个断开点起,按逆时针方向延展到第二个断开点之间的部分。( )

    • ×

    7. CAD低版本默认的阵列对话框包含___等对话内容。(多选题)

    • 阵列方式选择
    • 对象选择
    • 行列数量填写
    • 行列距离填写

    8. 用矩形阵列指令作实体阵列时,希望向右下方排列实体,应输入___。

    • 正行距负列距
    • 负行距负列距
    • 正行距正列距
    • 负行距正列距

    9. 2012版本CAD矩形阵列可以带角度进行倾斜的阵列。( )

    • ×

    10.AD2012版本的阵列指令包含矩形阵列、环形阵列、___三种方式。

    路径阵列

    11. CAD2012版本的阵列指令人机对话过程中涉及___等对话内容。(多选题)

    • 对象选择
    • 阵列方式选
    • 项目数应答
    • 行列间距应答

    12. CAD2012版本的阵列对象默认为成组性质,如果需要编辑其中一个对象,必须分解X指令,将阵列成组对象分解为单体对象。( )

    • ×

    13. 捕捉对象设置中勾选最近点,只要鼠标落在线段之上,即可处处实现点位的捕捉。( )

    • ×

    14. 绘制梯段上行下行指引线(包含箭头),通常选择___指令。

    • 直线L
    • 多线ml
    • 多段线PL
    • 多段线编辑PE

    15. 即将标注的线性尺寸的尺寸线,为已有尺寸标注的尺寸线延伸方向,通常采用 ___指令进行新的尺寸标注。

    • 线性标注
    • 对齐标注
    • 连续标注
    • 基线标注
    展开全文
  • 最近处理数据,需要把对称模型进行镜像得到完整模型。网上查找,关于matlab图像镜像处理的文章大多是imread读入图片,然后对色彩矩阵进行处理。或者是用mirror/flidim...如果关于xoz平面镜像,数据应修改为(X,-Y,Z,...

    最近处理数据,需要把对称模型进行镜像得到完整模型。网上查找,关于matlab图像镜像处理的文章大多是imread读入图片,然后对色彩矩阵进行处理。或者是用mirror/flidim命令处理。

    笔者要处理的是原始数据的镜像绘图,因此不涉及imread等相关操作。

    已有数据(X,Y,Z,T)
    其中X,Y,Z为节点x,y,z坐标值,T为节点连接关系。

    如果关于xoz平面镜像,数据应修改为(X,-Y,Z,T);
    如果关于yoz平面镜像,数据应修改为(-X,Y,Z,T);
    如果关于xoy面镜像,数据应修改为(X,Y,-Z,T);
    如果关于对角线镜像,数据应修改为(-X,-Y,Z,T);

    要得到镜像完的总体,只要每次绘图hold on就行啦

    是不是很简单~
    直接从数据入手,不用想着从图像入手或者调用现有函数~

    展开全文
  • 作为一个强大的科学计算软件,MATLAB广泛运用于较多领域,以其简单的编程风格著称。...几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。 接下来就是图像算法的第二讲,主要涉及的知识点有: 1...
  • 有两种常见的方法来渲染具有多个/递归反射的反射……>渲染到纹理并将该纹理应用于...如果镜子不是完美的平面,您也可以使用此方法,例如,这适用于水中的涟漪.事实上,这甚至可以使用立方体贴图进行扩展,以支持近似任...
  • 具体步骤: ...注意:我们打印是由上至下打印,所以拿到图型要先进行镜像变换 1、平行四边形 代码如下: //平行四边形 public static void parallelogram() { for (int y = 0; y <= 10; y++) { ...
  • ,当相机镜像到C’位置后,其视锥体裁剪范围是A+B,但实际应该位于反射贴图中的区域仅仅只有A区域,也就是我们需要根据平面P对相机C’裁剪。 投影矩阵: 先回顾一下渲染管线中的投影变换阶段,该阶段将...
  • 综述了镜像双目视觉测量技术的发展现状,从测量原理及传感器、测量模型及标定、测量精度及评价等方面分析了镜像双目视觉测量结构模型,主要包括基于平面折反射的镜像双目结构和基于曲面折反射的镜像双目结构,总结了...
  • 对于平面设计师来说eps格式文件相信肯定不会陌生,但是对于刚接触软件或者设计爱好者们来说,可能并不怎么熟悉和了解这个文件格式,其实它存在于平面设计三大软件之中,ps,ai,cdr都是可以打开使用和处理它,很多人...
  • AC-DMIS 5.3程序镜像

    2020-11-02 15:19:54
    弹出操作界面,在“对称平面和机床“选择需要镜像平面,然后点击“浏览”按钮。弹出“打开路径”界面,选择需要“镜像”的程序,点击“打开”按钮。“被镜像文件”路径自动读取到显示框中。如(2)所示: 点击...
  • 镜像水面的形成过程: 1、准备两张与BackBuffer同等大小的Texture,作为折射贴图和反射贴图 2、将世界渲染两遍,一遍... 反射贴图还需要设置好,相对于裁剪平面镜像矩阵。 3、绘制时,设置好对应的裁剪平面和R
  • 镜像对称物体的单幅透视几何等价于对称视点下的两幅视图,它们相差一个反射变换,并且具有自极几何对应性。平面镜不仅是对称面,而且还被当作标定平面,并利用灭点约束下的正八边形标记点计算相机外参矩阵。实验...
  • 提出了一种无群速度延迟的空间载频谱域光学...介绍了谱域OCT中无群速度延迟的空间载频消镜像方法的实验原理与实验系统,实验研究了平面镜样品在不同调制频率下的成像效果,并给出了平面镜和手指样品消镜像后的OCT图像。
  • 图像处理二、三章第二章图像处理...(1)图像有单色与彩色、平面与立体、静止与动态、自发光与反射(透射)等区别 (2)任一幅图像,根据它的光强度(亮度、密度或灰度)的空间分布,均可以用下面的函数形式来表达. 2
  • 在获取目标的光学系统中,加入一个由多个平面反射镜围成的正多棱柱体,它可以使目标产生的一组不同角度的镜像,将其作为目标图像与模板图像进行相关识别。可以从不同旋转角度的目标产生的镜像组中找到角度相似的镜像...
  • 对该压力维持系统的非线性数学模型进行线性化处理,得到一类具有积分不稳定时滞形式 的线性模型,采用镜像映射技术将该模型的不稳定极点映射到其关于虚轴对称的复平面左半平面,构建其镜像稳定模型.进而采用H∞最小灵敏...
  • 3D数学 矩阵和线性变换之镜像

    千次阅读 2015-07-20 21:29:36
    在2D中镜像变换就如下所示,沿着某条轴发生对称现象就叫镜像变换。在3D中同理可以得到沿着某个平面发生对称的现象。 2. 镜像变换的矩阵是怎样的? 我们想来看简单的,沿着x轴、y轴或z轴发生镜像变换(注意是...
  • 4、在左视中的平面绘制多边形草图、拉升凸台 5、 镜像实体 6、 在前视基准面上绘制回转体草图、旋转基体 7、在前视基准面上绘制要切除的回转体草图、旋转切除 注意: 1、旋转:时对封闭图形而言的因此下面作图中心...
  •  看看自己脚下的地板——虽然正方形、长方形、正六边形等图形都能平铺整个平面,但平铺... 下就是这个传说中的地板砖(及其镜像):    拼接时有两个要求:  (1) 黑色的线条必须连在一起
  • 其实三维图纸要比平常所进行熟知的平面图更直观详细,从而获得精准的效果,但是因为文件内存大很少有人绘制。具体的操作步骤演示如下: 第一步:找到电脑桌面上的迅捷CAD编辑器...
  • 其他博客很多 可以去看看 然后 我们二分一个时间 看这个时间 与整个平面有几个交点 首先看 和x轴平行的线 容易得出 交点个数为 floor的意思是 取小于等于当前小数的最大整数 另外两种 我们可以将坐标点 分别绕 ...
  • 展示了所构建的基于四平面镜的单相机三维(3D)采集系统, 介绍了系统所采用的三维扫描的几何光路, 分析了从图像解析出高度的3D采集算法、空间分辨率与图像分辨率的关系, 也讨论了算法的优化以及3D再现技术。...
  • 问题:已知空间中任意平面n*(x-x0,y-y0,z-z0)=0和空间中任意点V,其中n为该平面的法向量,x0,y0,z0为该平面上的一点。...求:该点相对于该平面镜像点v'和V到V'的转换矩阵,如下所示: 该
  • 光流也可以利用深度学习的模型来做,把左右两用同样的模型来提取特征,经过计算就能得出一个深度的信息。 但是这个方式的计算量非常大。 物体追踪(Object Tracking): 这也是无人驾驶中一个比较重要的技术...
  • 图像几何运算

    千次阅读 2017-12-12 17:07:11
    图像几何变换又称空间变换,指图像平移,镜像,旋转等操作。它是将一幅的坐标位置映射到另一幅图像中的新坐标(f(x0,y0)→g(x1,y1)),关键是确定映射关系和变换参数。几何变换不改变图像像素值,只在图像平面进行...
  • 图像的几何变换

    2020-12-24 15:37:44
    几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。一个几何变换需要两部分运算:首先是空间变换所需要的运算,如平移旋转和镜像等,需要用它来表示输出图像和输入图像之间的(像素)映射关系;此外...
  • 算法原理为:平面上有三个不共线的基站 A,B,C,和一个未知终端 D,并已测出三个基站到终端D的距离分别为R1,R2,R3,则以三个基站坐标为圆心,三基站到未知终端距离为半径可以画出三个相交的圆,如所示,未知...
  • 单个图像空间的结构关系,是否有对称、平移、镜像、叠加的关系 图像的内容的种类关系 图像中内容的直线、曲线...空间立体平面图像之间的转换和对应关系 空间立体对应的平面视图视角关系 多方块之间的移动关...
  • 几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。     我们以最常用的平移和旋转为例进行学习。在深度学习领域,我们常用平移、旋转、镜像等操作进行数据增广;在传统CV领域...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 137
精华内容 54
关键字:

平面图镜像