平面反射

平面反射,第1张

1、抓取屏幕图像——渲染纹理RenderTexture+额外摄像机

2、反射矩阵(ReflectMatrix)——获得反射的屏幕图像

3、斜裁剪矩阵(ObliqueMatrix)——裁剪掉反射平面以下的部分

4、高斯模糊——模糊反射的倒影

5、将反射纹理渲染到地面

之前的文章已经提过了,抓取屏幕图像有两种方法

1、GrabPass

2、渲染纹理RenderTexture+额外摄像机

这里需要使用第二种方法:

Unity已经为我们提供了获取斜裁减矩阵的方法CalculateObliqueMatrix,我们只需要注意这个方法的参数是视图空间的平面。

斜裁剪矩阵的推导过程 >

动态代理的实现方式常用的有两种:

在Java中javalangreflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口就可以生成动态代理对象,只能针对接口做代理。

接口和目标类没有任何变化,只不过为了增加难度,我们增加了返回值。

接口如下,除了增加了方法的返回值外无任何变化:

目标类如下,无任何变化:

接下来,我们使用JDK完成动态代理,对于代理类只需要实现InvocationHandler接口即可,并且要实现其中的invoke()方法。

invoke()中需要传入目标对象、目标对象的方法、调用目标所需的参数,传入后,就会直接调用指定对象的指定方法了。

我们使用举例:

我们只要创建一个ProxyHandler对象,直接调用invoke方法,传入其中所需要的对象、方法、参数,便可以执行我们写好的invoke方法,并且invoke中还可以调用指定对象的指定方法。这种方法非常灵活,ProxyHandler建立后,调用invoke方法时,可以传入任何对象、任何方法,非常自由。

这种 *** 作只是通过反射调用的指定对象的指定方法,并没有使用代理。但是可以用它来实现动态代理。我们只要生成一个代理对象,接口所有的 *** 作都由代理对象来完成。其中,代理对象中再通过这种反射的方式去调用目标对象即可了。

在使用动态代理时,ProxyHandler需要稍加改造,即在构造方法中传入目标对象。但是这里要注意的是,与静态代理不同,这里的目标对象的类型是任意的,因此同一个ProxyHandler可以用来代理不同的目标对象。

在使用时,如下:

首先,我们定义了被代理的类的实例,并且传给了proxyHandler。然后,我们我们直接调用了Proxy的静态方法newProxyInstance生成了一个接口的实例,这个实例就是代理(而且它知道它代理的是user对象,初始化时已经传给它了)。

然后,直接对这个实例调用方法就可以了,对这个接口调用方法,就相当于执行了invoke中的 *** 作,输出如下:

注意,在这种实现中,目标类target是在初始化时写死,并且在invoke时直接调用的,如果在invoke中直接调用传来的proxy对象,则会引发循环调用,造成死循环。

我们查看下Proxy类中的静态方法,newProxyInstance方法:

该方法用来返回指定接口的一个代理类实例。

输入参数有:

这样就指明了用哪个处理器处理哪个接口中的 *** 作,以及该对象如何生成出来。

生成的对象就是一个代理对象,就可以代理接口的 *** 作了。

石英石VR材质参数指的是石英石材料在虚拟现实技术中的特性参数,常见的石英石VR材质参数包括:

1 折射率:石英石的折射率一般在154-155之间,这决定了石英石的透明度和光线折射效果。

2 漫反射系数:石英石的漫反射系数决定了石英石表面的扩散反射能力,也就是说,它能否让光线均匀地散射到周围。

3 镜面反射系数:石英石的镜面反射系数决定了石英石表面的镜面反射能力,也就是说,它能否反射出明亮、锐利的图像。

4 透明度:石英石的透明度通常很高,能够使得透过它的图像非常清晰。

5 色泽:石英石有多种颜色,不同颜色的石英石VR材质参数也会略有不同。

以上是常见的石英石VR材质参数,不同的应用场景可能需要不同的参数。

以上就是关于平面反射全部的内容,包括:平面反射、250流明投影仪用什么幕布、基于反射的动态代理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9651435.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存