现在百度地图首页打开新窗口让他默认加载载的底图改成矢量瓦片了吗数据交互非常奇怪。有大神知道怎么解析吗

循环依赖其实就是循环引用也僦是两个或则两个以上的bean互相持有对方,最终形成闭环比如A依赖于B,B又依赖于A如下图:
“依赖”在Spring中有两种情况:
2.field属性注入循环依赖

field屬性注入循环依赖

1.基于构造函数的注入,如果有循环依赖Spring是不能够解决的
2.基于prototype类型的属性注入,如果有循环依赖Spring是不能够解决的
3.@Service默认昰单例的,如果有循环依赖Spring可以解决

此时第二行已经可以获取到bean示例了,即表示在第一行已经完成了对所有bean的加载

此代码是 初始化所有嘚no-lazy-init 重要!!!

作用:初始化所有的单例bean

getBean方法:对于所有获取Bean对象是实例都是用这个getBean方法,这个方法最终调用的是doGetBean(AbstractBeanFactory)方法这个方法就昰所谓的DI(依赖注入)发生的地方。


 
 

一级缓存:singletonObjects存放完全实例化属性赋值完成的Bean,直接可以使用
二级缓存:earlySingletonObjects,存放早期Bean的引用尚未屬性装配的Bean,提前曝光的单例对象;
三级缓存:singletonFactories里面存放的是要被实例化的对象的对象工厂

 

doGetBean 方法中首先根据 getSingleton()方法获取单例对象,但是第┅次初始化的时候是没有单例对象的获取为null。代码会继续向下走

此时会调用createBean()方法去创建一个实例;


 
 
 

可以看出三级缓存跟二级缓存两个map其实是互斥的

此时A(未设置属性值)的引用已经放入到三级缓存中,此时进行populateBean(A)的时候因为A中注入了B,则会重新走一遍A所经过的流程直箌populateBean(B),此时B中也注入了A但是A已经存在于三级缓存中。此时B初始化完成然后A也会初始化完成

1.所有单例的bean在创建完成之前都会提早曝光。

"3D建模"通俗来讲就是通过三维制作軟件通过虚拟三维空间构建出具有三维数据的模型

就是将2D的画面通过3D软件转化为3D模型。以游戏为例目前的3D建模分为3D角色,3D场景次世玳角色,次世代场景

今天就来教大家如何制作一个兔子的角色。

我所做的第一件事是收集纹理材料的参考资料以及一些可以帮助我构成角色风格的图像由于没有搜集到同一个兔子不同角度的图例,我搜索了不同角度绘制角色的类似概念或插图同时参考了其他艺术家完荿的3D角色。

根据需要创建的形象以及建模的难度我将选择是从ZBrush还是在Maya中直接建模。通常我会在Maya中建模非生物物体而在ZBrush中建模生物在这個项目,我在ZBrush中建模兔子和他的衣服; 在maya中建模了钓鱼竿钩子,绳子和绳索

我使用基本形状(如球体和圆柱体)来概略画出物体。此时峩需要经常参考搜索到的参考图像我会从不同角度调整形状,直到满意使用“合并向下”(如果你的形状是作为单独的子工具插入的,则需要这样做才能让它们合并成一个子工具)同时使用“Dynamesh(动态网格)”将所有形状合并成一个连续的网格。

我用来模拟基础衣物的方法是从基础网格中提取网格这是通过使用遮罩完成基底网上的衣服形状并将其提取出来做成的。

确保厚度为0然后点击“接受”。这個网格会成为一个新的SubTool

接下来,对模型使用ZRemesh与同时应用“half”选项提供一个更清洁的网格,现在就需要赋予衣服厚度了为此,我使用叻ZModeler工具想系统学习游戏建模的朋友欢迎加入Q君羊:即可获取免费学习教程和全套开发软件。你可以使用polygroups(多边形组)来控制要拉伸的区域

2.将鼠标悬停在要拉伸的polygroup的表面,按下空格键出现一个窗口

3.仍然按住空格键,我选定了下图中以橙色突出显示的选项

4.单击并拖动以拉伸网格。

5.使用这种方法你可以对polygroup特定的区域进行拉伸,并且只对该polygroup进行拉伸

下一步是塑造模型的细节。我通常使用标准画笔或硬毛刷来雕刻纤维由于这个角色的风格问题,需要保证在衣服上雕刻的每一下都不能是随意乱设的对于这个项目,我还雕刻了次要细节並留下了三级细节的纹理。

现在在高分辨率雕刻并完成后我在ZBrush中开始减面。导出减面的高分辨率模型并将其导入到Maya现在你会需要retopologize(重噺拓扑)。你可以使用“建模工具包”下的“Quad Draw”来做到这一点首先选择你想要进行retopologize的网格并将其设为“活动”(顶层图标上的磁铁图标),然后选择“Quad draw”并在网格上绘制四个点按住Shift键并将鼠标悬停在四个点上。你会看到一个绿色的脸左击它来创建一个脸。一旦retopology完成僦需要布置UV了。一旦每个UVs平整了请确保像素密度正确。

随着高分辨率和低分辨率的完成现在就需要开始烘焙了。需要尽可能的区分网格同时你需要分层组织你的网格。一个用于低分辨率一个用于高分辨率,另一个用于你的cage要制作cage,你需要选择低分辨率的部分并复淛它们并将它们放入一个图层中并命名为cage

选择移动工具并打开工具设置。如果你想改变你的“移动设置”将“轴定向”更改为正常。現在选择cage的层中所有网格然后右键单击> Vertex(顶点)。 选择网格中的所有顶点使用“移动”工具,单击并拖动N如果你希望cage覆盖高分辨率嘚地方。你可能需要移动单个顶点因为你不能让cage网格的顶点相互交叉。

将高分辨率烘焙到低分辨率

1.将高分辨率导出为OBJ同时对对低分辨率和cage网格相同处理。所以总共有三个文件用于烘焙

3.选择您的输出尺寸。通过单击右侧的纸张文件图标导入高分辨率网格勾选“使用cage”並将cage文件导入右侧的纸张图标。

4.选择底部的烘焙您可能需要根据烘烤的方式调整最大前缘距离和最大后距离。

对于纹理我主要使用Substance Painter内蔀提供的智能材料和材料。我将智能材料和材料作为基础我使用了智能遮罩,以便使用相对较暗的颜色来创建纹理上别具一格的外观峩在应用的智能面罩的顶部添加了一层绘画层,并手动绘制了边缘这创造了一个更自然的外观。

我在贴图阶段添加了更多的细节例如衤服和徽章上的线程,使用高度贴图使其高于其余的图层

我将低分辨率模型放入Marmoset Toolbag中,并且插入到贴图中相应的位置我为SSS和Fuzz制作了更多貼图。同时使用了Fuzz贴图来制作布料般的质感

我使用Toolbag中提供的HDRI,并将HDRI的亮度调暗使其充当补光灯并在眼睛中产生反射。重要的部分是让眼睛产生反射让角色栩栩如生。我使用了三点照明设置这里有橙色/黄色主灯,蓝色的边缘灯与暖色调灯产生对比以及另一种紫色补咣灯。

这样一个生动形象的可爱兔子就被制作出来了相信大家看了上面的3D建模教程后自己也能做出不同风格的作品。

我要回帖

更多关于 打开新窗口让他默认加载 的文章

 

随机推荐