![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
3D
文章平均质量分 77
the only KIrsTEN
这个作者很懒,什么都没留下…
展开
-
边界量(BV)和空间分区(SP)(轴对准边界框AABB,定向边界框OBB)
•一个1000x1000的场景图像,其中包含100个对象的1000个多边形中的每个物体需要1000亿个交叉点计算,才能第一次命中射线跟踪。如果b^2-4ac> 0,则将根替换为线方程,以给出相交点的(x,y,z);•A,B,C是多边形正常向量NP的组件,D是通过将任何顶点替换为(AX+by+Cz+d = 0)来计算的。•带中心(L,M,N)的球体,半径为R:(X-L)^2 +(Y-M)^2 +(Z-N)^2 = R ^2。•使用两个点(x1,y1,z1)和(x2,y2,z2)给定射线(线)方程式。原创 2023-01-12 01:14:01 · 830 阅读 · 0 评论 -
射线跟踪(递归射线跟踪)
•如果每个对象的n多边形,则是p x m x n射线多边形交点计算: If: p=1000x1000 and m=100 and n=1000, then 100,000,000,000 ray-polygon intersection calculations。•如果阴影触角在通往光源的途中相交不透明的对象,则将Ilocal设置为该光源的环境术语(或调制分散项)•由于数值不准确,相交点在形状内部,因此浅射线会相交相同的对象,从而产生“阴影”(斑点外观)原创 2023-01-12 14:00:00 · 1365 阅读 · 0 评论 -
计算机动画(一般参数曲线,Bezier立方曲线,双插值方法)
•一系列单独的“图纸”播放足够快地说服了它正在看到连续运动•示例:“赛马疾驰的动画顺序。拍摄的照片Eadweard Muybridge(卒于1904年),于1887年在费城首次出版。原创 2023-01-11 11:00:00 · 674 阅读 · 0 评论 -
3D纹理映射(噪点,基于物理的渲染)
•2D纹理颜色/扩散映射粘贴粘贴图片(纹理)到对象的表面上•在3D对象的表面上粘贴2D纹理有多种方法•3D纹理映射将对象放置在3D模式中•3D模式不表示为2D纹理的数组: 这将是记忆效率低下的;许多价值将保持未使用•相反,该模式通常表示为过程…原创 2023-01-10 18:32:45 · 495 阅读 · 0 评论 -
环境映射Environment mapping,颠簸映射Bump mapping,正常映射Normal mapping,位移映射Displacement mapping
最后在渲染的时候直接将该 高度图的每个像素与光源的向量点乘,即可得到表示每一点的明暗系数的图:根据高度图,越突出的地方,法线与光源夹角越小,该点的数值越大。位移映射与凹凸贴图之 间区别在例 图中已经很明显地显现出来了:在凹凸贴图中,只有法线进行了扰动,而几何体本身没有扰动,这样的结果就是人为改变只出现在物体的轮廓上,而球体本身仍然是原来的圆 形。使用立方体的中心作为视点和从多维数据集的每个面上看到的环境图像(注意:虽然在图中可见,但红眼睛的目的是位于立方体的中心,因此也位于茶壶的“中心”中。原创 2023-01-10 13:30:00 · 289 阅读 · 0 评论 -
Nyquist-Shannon采样定理(SSAA,MSAA,MIP映射)
我们根据每个采样点来进行shading(该概念还未提及,可以理解为计算每个像素点的颜色的过程,当然这里是一个纯红色的三角形,如果该点在三角形内,它的颜色值可以直接得到为(1,0,0)),这样得到了每个采样点的颜色之后,我们讲每个像素点内部所细分的采样点的颜色值全部加起来再求均值,作为该像素点的抗走样之后的颜色值!MSAA其实是对SSAA的一个改进,显然SSAA的计算量是非常大的,每个像素点分成4个采样点,我们就要进行4次的shading来计算颜色,额外多了4倍的计算量,如何降低它呢?原创 2023-01-10 13:00:00 · 1005 阅读 · 0 评论 -
2D纹理图(UV映射,S映射,O映射)
•纹理映射应用于对象的颜色 - 纹理不是’质地’!!•2D纹理映射粘贴位图图片(纹理)到表面一个东西•无尽的数码照片供应。原创 2023-01-09 13:00:00 · 655 阅读 · 0 评论 -
几何阴影(阴影卷Shadow volumes,模板缓冲区stencil buffer)
•“几何阴影”,因为我们计算了阴影的形状,但是仅猜测其反射的光强度•我们需要全球照明算法来确定更好的光强度• 开发:阴影从光源隐藏;阴影不会在静态场景中改变•可以在硬件中完成Shadow Z-Buffer: 对几何复杂性敏感不如阴影卷;混叠问题•由于高度计算的开销,阴影已经以与纹理映射的方式相同的方式 - 质量添加。原创 2023-01-09 11:00:00 · 582 阅读 · 0 评论 -
Z缓冲区(Z-buffer)
•栅格性多边形 - 计算多边形盖的像素•对于可编程管道,最受欢迎的渲染组合是z缓冲区,phong反射模型,phong插值: Z-Buffer在硬件中无处不在(替代:基于瓷砖的递延渲染,例如PowerVR)•由于固有的效率低下,无法为Z-Buffer留下知名度处理复杂场景时的实时图形•必须有Z前撤离器策略,例如 BSP树,可能可见的套装•R,G,B,α。α的值用于将新值与现有的值融合像素中的价值。原创 2023-01-09 10:30:00 · 814 阅读 · 0 评论 -
渲染(phong或Blinn -Phong反射模型,Gouraud与Phong插值阴影)
•多边形的顶点是从世界空间进入屏幕空间的空间•多边形重叠像素的集合•对于每个像素计算强度•因此,阴影算法起作用屏幕空间:增量算法•但是,照明计算是在世界空间。原创 2023-01-09 10:00:00 · 540 阅读 · 0 评论 -
图形管道(投影,mvp)
此坐标系中x轴,y轴和z轴的正方向是如下规定的:把右手放在原点的位置,使大拇指,食指和中指互成直角,把大拇指指向x轴的正方向,食指指向y轴的正方向时,中指所指的方向就是z轴的正方向。也可以按如下方法确定右手(左手)坐标系:如果当右手(左手)的大拇指指向第一个坐标轴(x轴)的正向,而其余手指以第二个轴(y轴)绕第一轴转动的方向握紧,就与第三个轴(z轴)重合,就称此坐标系为右手(左手)坐标系。•查看空间(XS,YS,ZS)被转换为盒形空间(XS,YS)(-1至+1),带ZS作为深度(0至1),它支持轻松剪切。原创 2023-01-07 13:00:00 · 770 阅读 · 0 评论 -
3D对象的表示(包括CSG,Quadtree,Octree)
f(x,y)= 0的点;带中心的圆圈(a,b):(x-a)^2 +(y-b)^2 = r^2。参数形式:x = f(t) = r sin(t);隐性形式:x^2 + y^2 = r^2 or F(x,y) = x^2 + y^2- r^2 = 0。隐性形式:x^2 + y^2 +z^2= r^2 or F(x,y) = x^2 + y。•“体素” - 将空间相等的细分到立方体:建模中的体素;•单一斑点:f ( p) = s(1-(r^2 )/(R。原创 2023-01-07 10:30:00 · 1316 阅读 · 0 评论 -
3D 多边形网格(机翼边缘数据结构)
在计算机图形的几何形状中,多面体的顶点处的顶点正常是与顶点相关的定向矢量,旨在替代表面的真实几何形状正常。通常,它被计算为包含顶点的面部表面正态的归一化平均值。给定对边缘记录的引用,可以在恒定时间内回答几种类型的邻近查询(有关相邻边缘,顶点和面部的查询)。•顶点正态(近似于基础光滑的曲率)可以通过平均来计算多边形近似的表面周围多边形:Na =(N1 + N2 + N3 + N4)/4。示例:截短的金字塔和立方体是随机的分布在球体的表面上以产生更复杂的对象(使用3DS Max插件生产)。原创 2023-01-04 14:15:00 · 521 阅读 · 0 评论 -
3D预处理的步骤(关于API,GPU的说明)
API(应用程序接口)是一种软件中介,它允许两个不相关的应用程序相互通信。它就像一座桥梁,从一个程序接收请求或消息,然后将其传递给另一个程序,翻译消息并根据 API 的程序设计执行协议。API 几乎存在于我们数字生活的各个方面,可以说是我们现代插件、数字接口和软件通信环境的隐藏支柱。它们将所有内容连接在一起,使软件系统协调一致地工作。API 对企业用户来说大多是不可见的,但为软件程序开辟了广泛的可能性。它们的工作原理是以受控的方式开放软件的一小部分功能和数据。原创 2023-01-04 14:00:00 · 498 阅读 · 0 评论 -
3D 创建椭圆对象
在这里,我们可以看到在窗户的南部创建了四个Jbuttons并添加到窗户的南部。M03实现了ActionListener界面,这意味着它需要提供一种称为Action Performformed(ActionEvent e)的方法,该方法对诸如GUI中的按钮按下等动作事件做出了响应。通过在场景图中存储对特定转换节的引用,我们可以更改存储在它们中的转换。然后,我们更新场景图(twobranchroot.update())以更新每个依赖节点中存储的所有世界转换,然后可以使用新值重新绘制场景图。原创 2022-11-21 14:00:00 · 206 阅读 · 0 评论 -
3D 堆叠物体(立方体和球体)
程序清单中的评论线线条适用于球体的非纹理版本,以替换纹理版本。Fragment着色器FS_SPHERE_04_NOTEX.TXT没有任何纹理变量,而仅使用对象的材料的环境,分散和镜面值。对于立方体,模型矩阵转换首先将Cube 0.5沿正方向转换为0.5(以将立方体的底部放在点(0,0,0)),然后缩放4个以创建4x4x4个立方体 其基地的中心位于(0,0,0)。创建了三个单独的模型,其中包括使用新的球体类,该类别以过程为基础创建所需的顶点和连接信息。使用了五个纹理,一个用于地板,各个纹理用于立方体和球体。原创 2022-11-21 10:45:00 · 761 阅读 · 0 评论 -
将对象从3D坐标系转换为2D显示空间(立方体)
形成三角形的三个顶点的组在此过程的早期阶段保持“连接”,直到将它们双线插值进行双线插值,以产生代表三角形以显示在屏幕上的三角形的单个片段的集合。在此示例中,我已经将所有4个矩阵传递给着色器,以证明我们可以(i)将模型,视图和投影矩阵分别传递到着色器,或者(ii)将它们组合到CPU上的模型视频预测矩阵中。它将行柱有序的矩阵转换为存储在浮子数组中的列有序矩阵,这是顶点着色器中使用的数据类型中所需的内容。在下一步中,计算模型视图投影矩阵。因此,它们是按照投影,视图,模型的,因此模型矩阵是第一个应用于顶点的。原创 2022-11-17 11:00:00 · 1035 阅读 · 0 评论 -
3D 数学库gmaths包用于向量
注意:Mat4Transform中我旋转方法的参数以度为单位,而Java方法Math.sin(),Math.cos()等。在旋转方法中,我在与Math.sin()和Math.cos()一起使用之前将提供的参数转换为弧度。在继续进一步之前,您应该检查GMATHS软件包中每个类中的方法。我还包括一个名为Mat4的类,即4x4矩阵,以及一个称为Mat4Transform的类,该类用于设置矩阵以翻译,缩放和旋转对象(每个轴有三个旋转矩阵,一个用于每个轴),以及包括设置视图矩阵和透视矩阵的方法(稍后将详细介绍)。原创 2022-11-17 10:45:00 · 459 阅读 · 0 评论 -
3D “纹理”基础知识和改变纹理
“纹理”存储在位图文件中(例如JPG图像),可用于为一组多边形着色。 我们将在讲座中研究这一点。 在本教程中,我们将研究实用性。 我将遵循Joey的教程,描述如何进行Jogl所需的更改。本章由三个主要部分组成:1.使用纹理的基础知识2.纹理单元3.动态纹理和改变纹理1.描述了纹理坐标是什么,使用纹理纤维类别,并显示如何使用它来纹理三角形。2.演示了多种纹理的使用。 还讨论了效率问题。3.表明,在显示循环期间可以动态更改纹理或切换到完全不同的纹理。使用纹理的基础知识(1)纹理坐标( Textur原创 2022-11-17 10:30:00 · 729 阅读 · 0 评论 -
3D着色器(OpenGL)
本章将更详细地查看着色器,包括如何将数据直接传输到顶点和片段着色器中的CPU-以前部分中的示例将数据用作字面价值(以及使用vertex)将硬编码的数据作为文字值(以及使用Vertex)来自GPU上顶点缓冲区的数据。本章由三个主要部分组成:1.着色器的基础知识2.动态更改VBO数据3.着色器类着色器的基础知识处理直接将数据从CPU传输到GPU着色器。例如,我们可能希望在CPU上运行的程序的控制下更改三角形的颜色,或更改所绘制三角形的顶点的位置。动态更改VBO数据的重点是如何动态地更改CPU程序循环中原创 2022-11-16 10:00:00 · 550 阅读 · 0 评论 -
OpenGL元素缓冲区对象绘制多个三角形
1.可以通过配置OpenGL来绘制三角形的边缘而不是填充三角形来绘制线框的“线框”,而不是填充绘制的三角形。正如我之前说过的,即使有更多的顶点可以处理,也可以从一个程序中复制许多用于处理GPU的代码。然而,这涉及重复数据。在private int引入了一种新的缓冲区,即元素缓冲区(elementBufferId),用于存储描述三角形的索引-您可能需要在一张纸上绘制三角形以检查您的理解。(提示:如图2.12所示,如果您绘制三角形的轮廓,可能会更容易看到发生的事情。)(我们将研究下一章中如何更改三角形的颜色。原创 2022-11-15 18:15:55 · 703 阅读 · 1 评论 -
OpenGL绘制三角形
在尝试此部分之前,请阅读Hello Triangle的示例。它描述了可编程管道的重要方面,包括着色器和片段。我不会解释这些细节。相反,我将主要关注JOGL的差异,因为一些JOGL方法有不同的参数,当然,Java没有指针,这是他的一些C示例所依赖的。(JOGL文档在这些情况下很有用。)在现代OpenGL中,绘制三角形比你想象的更详细,因为作为可编程管道的一部分,在设置缓冲区和着色器方面需要做很多工作。顶点和片段着色器以及三角形数据可以以文本文件形式提供,并加载到CPU上的主程序中,也可以硬编码到程序中。然后原创 2022-11-15 10:00:00 · 1062 阅读 · 0 评论 -
使用JavaSwing代码创建绘图表面(JOGL)
这些程序可以访问OpenGL API以及用于创建窗口和检测该窗口上的事件的标准Java例程(例如,窗口关闭事件,例如,在Microsoft Windows中,通过单击窗口标题栏右端的叉来触发)。另一种方法是使用java.awt.*和java.awt.event.*和com.jogamp.opengl.*和com.jogamp.opengl.util.*使用通配符.*意味着编译器将根据该文件中的其余程序代码决定需要导入哪些类。在考虑剩余的行之前,请阅读OpenGL配置文件上突出显示的框中的文本。原创 2022-11-15 10:00:00 · 604 阅读 · 0 评论