ZhangZhihui's Blog  

在Blender5.2的Array Modifier中有个'Realize Instancies'选项,这是干什么用的?

 

在 Blender 的 Array Modifier(阵列修改器) 中,“Realize Instances”(实现实例/转化为真实几何体)选项的核心作用是:将阵列复制出来的虚拟“实例(Instances)”转化为真正独立的、可被独立编辑或被后续修改器识别的实体网格数据。

为了更直观地理解它的作用和使用场景,可以从以下几个维度来看:

1. 为什么需要这个选项?(背景)

在较新版本的 Blender(如 5.x 系列)中,阵列修改器在底层或某些复杂排列(如曲线阵列、环形阵列、随机变换等)时,为了保证视口流畅和极高的性能,默认会把复制出来的物体当作“实例(Instances)”来处理。

  • 实例的特点: 它们只是内存中的“影子”,省内存、跑得快,但它们共享同一份网格。

  • 产生的问题: 如果你想在阵列之后再加一个 Displace(置换)Solidify(实体化)Bevel(倒角) 等修改器,或者进入编辑模式去单独对其中某一个复制体进行变形,你会发现后面的修改器对它们“无效”或者整体表现不正常,因为 Blender 还没把它们当成真正的网格。

2. 勾选 “Realize Instances” 后会发生什么?

  • 转换为真实网格: 勾选后,阵列生成的每一个复制体都会变成切切实实的独立网格几何体(Real Geometry)

  • 后续修改器生效: 这样一来,排列好的所有物体就可以作为一个整体网格,完美配合后续的修改器(比如你想整体加个倒角,或者用布尔运算切一刀)。

  • 便于后续分离: 当你未来点击 Apply(应用)该阵列修改器后,这些复制体不再是抽象的实例,而是在网格上紧密相连的独立部件,进编辑模式按 P 键选择 By Loose Parts 可以瞬间拆分成无数个独立的子物体。

3. 什么时候该勾选?什么时候不该勾选?

  • 建议勾选: 当你的阵列需要配合其他修改器(如倒角、置换、布尔等),或者你希望阵列的每个个体在后续步骤中拥有独立的几何属性时。

  • 建议不勾选(保持默认): 如果你只是做非常大量的物体复制(例如成千上万个密集的建筑模块、栏杆、草株),不勾选可以大幅节省显存和内存,保持视口操作丝滑(因为实例占用的资源极少)。

 

 

I created a rock, added an Array Modifier to it, chose 'Line' for 'Shape', chose 'Rellative' for 'Offset Method', assigned '1' to 'Offset Y', assigned '60' to 'Rotation Z'. I expected the output to be a line of rotated rocks, but the output shape was a semi-circle, why?

 

出现 半圆形(或者弧形排列) 的结果,是因为你同时组合使用了 “相对位移(Relative Offset Y = 1)”“旋转(Rotation Z = 60°)”

这在数学和几何上触发了类似“递归迭代”的效果:

  1. 增量累加(Cumulative Transformation):

    在 Blender 的 Array 修改器中,当你同时开启位置偏移和旋转时,每一个复制出来的个体,都是相对“上一个个体”进行相对坐标计算的

  2. 为什么会弯曲成半圆:

    • 第 1 个复制体比原岩石沿 Y 轴平移了 1 个单位,并旋转了 60°。

    • 第 2 个复制体则会以第 1 个复制体为基准,再往它的前方平移 1 个单位,并再次累加 60° 的旋转。

    • 以此类推,每多复制一个,方向就偏转 60°。当复制到第 6 个时($6 \times 60^\circ = 360^\circ$),它们刚好绕了一圈闭合。如果你只复制了适量的个数(比如 3 到 4 个),由于每次都带一点方向偏转,累加起来就会呈现出一个优雅的<strong data-path-to-node="2,1,1,2,0" data-index-in-node="127">弧形或半圆形轨迹</strong>。

 

 

Array Modifier选了“Realize Instances”,但后面的‘Randomize Transform’修改器(设置了Rotation Z为60度)仍然没有起作用,石头并没有旋转。

 

在 Blender 中,当你为带有阵列修改器的物体添加 Randomize Transform(随机变换) 修改器,却发现石头并没有按预期旋转时,通常是因为修改器的堆叠顺序(Modifier Stack Order)或者实例的识别状态出了问题。

要让 Randomize Transform 完美作用于阵列复制出来的每一个独立个体,请检查并调整以下两点:

原因 1:修改器的堆叠顺序不对(最常见)

修改器是从上往下依次计算的。如果你把 Randomize Transform 放到了 Array 修改器的下面(后方),而 Array 又没有开启 Realize Instances,或者顺序颠倒了,随机化就会失效。

🛠️ 正确的顺序应该从上往下是:

  1. Array Modifier(阵列修改器) —— 必须勾选 Realize Instances

  2. Randomize Transform Modifier(随机变换修改器) —— 必须放在阵列的下方!

  • 原理: 必须先通过 Array 把石头“生出”并“实例化为真实网格(Realize Instances)”,接着下方的 Randomize Transform 才能抓取到这些独立的网格个体并对它们施加随机旋转。如果顺序反了,随机化在阵列“生出石头”之前就执行了,自然看不到旋转效果。

原因 2:勾选了 Realize Instances 但未正确传递数据域

如果在阵列修改器中勾选了 Realize Instances,但旁边那个 Input Attribute Toggle(输入属性切换)不小心被误触修改了默认的域(Domain),导致后续修改器无法识别这些实例的几何体:

🛠️ 检查方法:

  • 确保 Array 修改器里的 Realize Instances 只是单纯勾选状态,不需要去乱动它后面的下拉属性。

  • 确保你在 Randomize Transform 的参数里,Random Seed(随机种子) 不是 0,或者 Rotation 的 Z 轴数值确实给够了(比如 60° 是弧度还是角度,注意 Blender 中通常默认是角度,如果没反应可以试着把数值调大到 360° 观察)。

 

 

上面两个原因我都检查了,都不是。我把Array Modifier删除了,只保留Randomize Transforms modifier,也看不到任何效果,怎样才能让Randomize Transforms modifier生效?

 

问题出在 Blender 的修改器(Modifier)系统中其实并没有名为“Randomize Transforms”的独立修改器

你提到的“Randomize Transform”通常是以下两种完全不同的功能,这也是为什么单独把它留着却看不到效果的原因:

1. 它其实是一个“操作命令(Operator)”,而不是修改器

如果你是通过按下 F3(或 Space)搜索调出的 Randomize Transform

  • 它的性质: 这是一个一次性执行的建模工具命令,而不是像 Array 那样挂在右侧属性面板里的“实时修改器”。

  • 为什么没效果: 必须在 Object Mode(物体模式)先手动多选选中多个已经复制好的物体,然后执行这个命令,它才会瞬间给这些物体赋予随机旋转。如果场景里只剩孤零零的一个石头,或者它只是个阵列出来的虚拟实例,这个命令对它是不起作用的。

2. 它其实是“几何节点(Geometry Nodes)”里的一个节点

在较新版本的 Blender 中,如果要用节点实现非破坏性的随机变换,通常是在几何节点里使用 Randomize Transforms 节点。单纯在修改器面板里是无法直接添加这个功能的。

💡 正确让石头实现“直线排列 + 随机旋转”的标准操作步骤:

如果你希望用最稳妥、最不容易出错的方法做出排成一条直线且各自随机旋转的石头,建议放弃修改器里的混淆项,改用以下最直观的传统流程:

  1. 先用阵列排成直线:

    • 选中石头,添加 Array Modifier

    • 取消勾选 Relative Offset,勾选 Constant Offset,并在 Y(或 X)轴输入间距(例如 2m),设置好数量,让石头排成一条直线。

  2. 应用阵列:

    • 在 Array 修改器面板上点击 Apply(应用)。此时阵列消失,石头变成了连在同一个物体里的多个独立网格。

  3. 一键拆分并随机化:

    • Tab 进入 Edit Mode(编辑模式),按 A 全选,然后按 P --> By Loose Parts(按松散部件)拆分成独立物体,再按Tab退回 Object Mode。

    • 全选 刚刚拆分出来所有的独立石头物体。

    • 点击顶部菜单栏的 Object(物体) --> Transform(变换) --> Randomize Transform(随机变换)

    • 在左下角弹出的参数面板里,直接调整 Rotation 的 Z 轴角度(比如设为 60°360°),所有石头就会瞬间在直线上获得完美的随机旋转。

 

 

我按照你给出的步骤操作,在Randomize Transofrm时也只选择了Randomize Rotation,可本来是排成一列的石头除了自身旋转外位置也变了。

 

在 Blender 中执行 Randomize Transform 时,旋转(Rotation)是严格绕着每个物体的“原点(小橙点)”进行的

如果你刚才应用(Apply)阵列并拆分后,每个独立石头的原点不在它自身的几何正中心(例如原点全被留在了最初的那块母体石头上,或者偏向了一侧):

  • 当你施加旋转时,石头就会以那个偏离中心的“原点”为支点进行圆周摆动,视觉上看起来就像是位置发生了偏移和乱跑

🛠️ 彻底解决步骤:

  1. 撤销或重新全选 那些走样了的石头。

  2. 确保在 Object Mode(物体模式)全选所有石头

  3. 点击顶部菜单栏的 Object(物体) --> Set Origin(设置原点) -->(原点到几何中心)

    • (这一步会把每个石头的旋转轴强制拉回到它自己的正中心。)

  4. 再次执行 Object --> Transform --> Randomize Transform

  5. 在左下角弹出的参数面板里,确认 Location 全部为 0,只给 Rotation 的 Z 轴设数值。

此时由于旋转轴心就在石头自己肚子里,它们就只会单纯地在原地自转,绝对不会破坏原本整齐的一字直线排列。

 

 

 

How to make a stone or rock that looks natural in Blender?

 

在 Blender 中制作一块自然的石头,核心在于避开过于规则的几何体,通过“形体不规则化(形状) + 表面粗糙度(置换/微观纹理) + 材质过渡(色彩/凹凸)”来还原大自然的质感。

目前主流且最高效的做法主要有以下几种,你可以根据项目需求选择:

方法 1:用“自带插件”快速生成基础石头(最快、适合背景和中景)

Blender 内置了一个非常强大的官方自带插件,几秒钟就能生成一块底子极好的自然岩石:

  1. 开启插件:

    • Edit $\rightarrow$ <code data-path-to-node="5,0,1,0,0" data-index-in-node="19">Preferences</code> <span class="math-inline" data-math="\rightarrow" data-index-in-node="31">$\rightarrow$ <code data-path-to-node="5,0,1,0,0" data-index-in-node="43">Add-ons</code>(偏好设置 <span class="math-inline" data-math="\rightarrow" data-index-in-node="56">$\rightarrow$ 插件)。

    • 搜索 Extra Objects(Extra Mesh: Extra Objects),勾选开启它。

  2. 生成石头:

    • 回到 3D 视口,按 Shift + A $\rightarrow$ <code data-path-to-node="5,1,1,0,0" data-index-in-node="33">Mesh</code> <span class="math-inline" data-math="\rightarrow" data-index-in-node="38">$\rightarrow$ <code data-path-to-node="5,1,1,0,0" data-index-in-node="50">Rock Generator</code>(岩石生成器)。

    • 视口左下角会弹出一个参数面板,你可以在这里调节石头的粗糙度(Roughness)裂缝(Detail)圆润度等。

  3. 后续精修:

    • 生成后,你可以通过 Displace 修改器或 Sculpt 模式稍微捏几下,让它变得独一无二。

方法 2:经典的“Cube + Displace 修改器”法(非破坏性、灵活)

如果你想自己从零控制一块高精度的写实石头:

  1. 基础建模:

    • Shift + A 添加一个 Cube(立方体)(比普通的 UV Sphere 更好,因为它的拓扑结构更均匀,不易在顶部拉伸)。

    • Ctrl + 2 给它加一个 Subdivision Surface(表面细分) 修改器(级别设为 3 左右),让它变成一个圆润的软球体。

  2. 添加大块面的不规则起伏:

    • 在修改器面板中添加一个 Displace(置换) 修改器。

    • 点击 New 新建一个纹理,然后把右侧属性切换到 Texture(纹理面板)

    • 将纹理类型设为 Voronoi(沃罗诺伊)或者 Clouds(云朵),并增大 Noise Size(噪波大小)

    • 回到修改器面板,适当调低 Strength(强度),石头立刻就会呈现出那种被风化、切割的岩石大块面。

  3. 添加微观细节:

    • 在第一个 Displace 下方再加第二个 Displace 修改器

    • 纹理类型选择更细碎的 Noise,Strength 设得很小(比如 0.05),用来制造石头表面的细微颗粒感。

方法 3:雕刻法(Sculpting)—— 追求极致写实与细节

如果你需要一块近景特写的巨石或悬崖峭壁:

  1. 添加一个多边形较多的球体或立方体,进入 Sculpt Mode(雕刻模式)

  2. 使用以下几个神级笔刷:

    • Clay Strips / Crease: 刻勒出岩石硬朗的棱线、断裂面和裂纹。

    • Scrape / Flatten: 拍平表面,制造岩石历经风化形成的扁平、坚硬的切面(硬表面岩石感的核心技巧)。

    • Snake Hook: 偶尔拉扯出一些不规则的尖角或不平衡的重心(大自然很少有绝对对称的石头)。

💡 灵魂一步:如何给石头调配出“自然的高级感材质”?

再好看的石头模型,如果贴图单一也会假。在 Shader Editor(着色器编辑器) 中,一个自然的岩石材质通常包含以下几个核心要素:

  1. 双色混合(Color Ramp):

    • 用一个 Noise TextureMusgrave Texture 作为遮罩,连接到一个 Color Ramp

    • 让石头的凹陷处(阴影缝隙)颜色偏深、偏脏(带点泥土的暗褐或青黑),凸起处颜色偏亮、偏干,制造出岁月侵蚀的层次感。

  2. 边缘磨损(Pointiness / Dirt):

    • 使用 Geometry 节点 里的 Pointiness(尖锐度) 输出,连接 Color Ramp 后混入 Roughness 或 Base Color,让石头的棱角和顶端呈现出被风沙打磨过的高光或微白感。

  3. 法线与凹凸(Bump):

    • 必须连接一个细微的 Noise TextureBump(凹凸) 节点的 Height 中,Strength 调小,赋予石头微米级的粗糙皮肤,这样在光照(Rendered 模式)下才会有真实的光影反射。

 

 

添加两个level为3的Subdivision Surface修改器和添加一个level为9的Subdivision Surface修改器效果一样吗?

 

效果完全不一样。

从数学原理和实际计算结果来看,添加两个 Level 3 的表面细分修改器,其细分程度和面数要远小于直接添加一个 Level 9 的修改器。

它们之间的差距可以用以下几点来解释:

1. 面数与内存呈“指数级”暴增

表面细分(Subdivision Surface)的算法(通常是 Catmull-Clark)在每提高一级时,网格的面数大约会乘以 4$4^{level}$)。

  • 添加两个 Level 3 的修改器:

    • 第一个 Level 3:面数变为原先的 $4^3 = 64$ 倍。

    • 第二个 Level 3:在第一个的基础上再乘以 64,总共是 64 * 64 = 4,096 倍。

  • 添加一个 Level 9 的修改器:

    • 面数直接变为原先的 $4^9 =262,144 倍。

对比: 4,096 倍与 262,144 倍有着数量级的巨大差距。如果原模型是一个 1,000 面的正方体:

  • 两个 Level 3 最终会产生约 400 万个面

  • 一个 Level 9 会产生约 2.6 亿个面

2. 软件表现与崩溃风险

  • 两个 Level 3 的组合在现代电脑上通常还能流畅处理。

  • 直接挂载一个 Level 9 的修改器,会瞬间产生数亿甚至数十亿个多边形面,大概率会直接耗尽你的显存/内存导致 Blender 崩溃卡死。在实际生产中,极少有场景会用到 Level 9 这么高的细分(通常雕刻或渲染时,总细分达到 Level 4 到 Level 6 已经非常极限且足够细腻了)。

3. 中间是否有其他修改器参与?

  • 如果是中间没有任何其他修改器的纯叠加(即:基础模型 -> Subsurf(3) -> Subsurf(3)),它在数学上最终呈现的平滑圆润程度,也无法等同于一个极高阶的 Level 9,它只是进行了两次相对温和的迭代平滑。

 

 

 

两个level为2的Subdivision Surface修改器平滑效果是不是比一个level为3的要好?

 

不是的。一个 Level 3 的平滑效果,在绝大多数情况下要比“两个 Level 2”叠加的效果更好、更细腻,而且结构更健康。

虽然“两个修改器叠加”听起来像是进行了两次细分,但从表面细分(Catmull-Clark 算法)的数学原理来看,它们的效果有本质的区别:

1. 两次 Level 2 不等于 Level 4,也达不到 Level 3 的拟合精度

  • 平滑算法的收敛性: 表面细分算法每执行一次,就会根据周围的顶点计算出一个新的平滑位置。

  • 如果你加了一个 Level 3,Blender 是在原始网格的基础上,直接一步到位计算出高密度的平滑网格。

  • 如果你加了 两个 Level 2(相当于 $Level 2 \rightarrow 再来个 Level 2$):

    • 第一个 Level 2 把网格细分并平滑了一次。

    • 第二个 Level 2 会把第一个 Level 2 已经平滑过的、密密麻麻的新顶点再次当作“原始网格”去进行平滑。这会导致算法在已经很圆润的表面上“过度平滑(Over-smoothing)”,让原本该硬朗的边缘或细节变得像融化的蜡烛一样糊成一片,形状容易失控。

2. 面数与性能的巨大差异

  • 一个 Level 3: 面数是原模型的 $4^3 = 64$ 倍。

  • 两个 Level 2: 第一个 Level 2 产生 $4^2 = 16$ 倍,第二个 Level 2 在 $16$ 倍的基础上再乘以 $16$,最终面数会变成 $256$ 倍

  • 结论: 两个 Level 2 产生的面数(256倍)远大于一个 Level 3(64倍),但它们呈现出来的平滑质感和形状精度却不如 Level 3。这属于典型的“用更高的性能代价,换来更差的形状控制”。

💡 Blender 建模中的最佳实践:

在实际制作中,极少有人会去堆叠多个表面细分修改器。标准的规范做法是:

  1. 一个修改器走天下: 绝大多数情况下,只添加一个 Subdivision Surface 修改器,通过调节视口和渲染的 Level(通常设为 2 到 3 就足够了)来控制精细度。

  2. 用控制线(Support Loops / Crease)来代替堆叠: 如果觉得一个 Level 3 不够硬朗或不够平滑,正确的做法不是加第二个细分,而是进入编辑模式(Edit Mode)通过加环切线(Ctrl + R)或调整网格结构来控制边缘的松紧度。

 

 

 

我用Extra Mesh Objects插件中的Rock Generator生成的石头用了两个Subdivision Surface修改器和4个Displace修改器(Musgrave一个,Voronoi一个,Clouds两个)。

 

🛠️ 这种组合在视觉上的分工:

  1. Rock Generator(基础模型): 奠定了石头不规则的、天然的大轮廓底子。

  2. 2个 Subdivision Surface(表面细分):

    • 把原本低模的棱角彻底粉碎,提供了极其密集的顶点画布,让后面的置换修改器能够雕刻出细腻的凹凸,而不会出现锯齿或像素感。

  3. 4个 Displace 修改器(叠加魔法):

    • Musgrave / Voronoi(大块面): 制造出类似冰川切割、地质挤压或者大块岩层断裂的硬朗硬表面切面,决定了石头的“骨相”。

    • 双 Clouds(微观与细节): 模拟风沙长期侵蚀造成的细腻颗粒感、表面凹凸不平的皮肤,决定了石头的“皮相”。

 

在用 Rock Generator 制作石头时,叠加两个 Subdivision Surface(表面细分)修改器,并不是为了追求“双倍的平滑”,而是为了在“大型结构(骨相)”“微观细节(皮相)”之间做出精细的分层控制。

如果只用一个细分修改器,或者把细分等级直接拉得极高,很难做出既有大块面切面、又有细腻风化颗粒的自然岩石。

这种“双细分 + 多置换”的底层逻辑,其实是遵循了这样的工作流:

1. 为什么要分“两次”细分?(分层控制)

  • 第一个 Subdivision Surface(负责“承上启下”):

    • Rock Generator 生成的原始石头面数通常比较适中(属于中低模)。

    • 第一个细分(比如设为 Level 2)的主要任务是把网格均匀加密,顺便消除原始生成器可能带有的生硬转折。

    • 紧接着在它下面接上那几个做“大块面切面”的置换(比如 Voronoi 或 Musgrave)。因为网格已经加密了,这些大号置换才能切出清晰、硬朗、没有锯齿的岩石大棱角。

  • 第二个 Subdivision Surface(负责“迎接微观细节”):

    • 经过第一轮大块面置换后,石头的整体骨架已经出来了。但是如果你想再加上那两个做风化颗粒的 Clouds 细节置换,你会发现:刚才切完大块面后的网格密度,对于细微的颗粒来说还是不够密

    • 如果不加第二个细分,直接用 Clouds 置换,你做出来的细节会带有明显的方块像素感(网格太疏,顶点不够推)。

    • 于是,第二个细分再次登场,把网格二次加密到极高的密度。这样,最后那几个 Clouds 置换才能在表面雕刻出极其细腻、连毛孔级都能看清的风化凹凸。

2. 为什么不干脆用“一个级数极高的细分”来代替两个?

你可能会想:既然需要密集的网格,为什么不直接把第一个细分从 Level 2 改成 Level 4 或 Level 5 呢?

  • 原因在于“置换的插入时机(分层叠加)”:

    • 如果只有一个细分,所有的置换(无论是做大块面的,还是做微小颗粒的)都会混在同一层网格上运算。

    • 而“细分 $\rightarrow$ 大置换 $\rightarrow$ 再细分 $\rightarrow$ 小置换”这种交替叠放的非破坏性堆栈,能够让大自然“地质挤压/切割”的痕迹和“风沙侵蚀”的痕迹互不干扰

    • 这种做法在 3D 行业(比如 ZBrush 的分级雕刻 Subdiv Levels)中非常常见:粗雕用中等网格,细雕用超高网格

💡 核心总结

用两个细分修改器的本质目的是:先加密一点点来切大形,再加密亿点点来做细节。

不过,这种流派虽然效果逼真,但由于网格被连续加密了两次,面数会非常恐怖。操作时一定要注意盯着视口面数,把前一个细分的视口级别(Viewport Level)压低(比如设为 1 或 2),否则电脑很容易卡死。

 

 

什么是“低模”,什么是“高模”?把低模打碎是什么意思?

 

在 3D 建模和游戏开发中,“低模”和“高模”是描述模型多边形面数(Polygon Count)以及细节精度的两个核心概念。

1. 什么是“低模”?(Low-Poly)

  • 定义: 面数非常少、结构简单的三维模型。例如一个正方体、一个只有几十个面的球体,或者用最少线条勾勒出轮廓的粗糙模型。

  • 特点:

    • 形状看起来比较“方”、“硬”或者“简陋”。

    • 文件体积极小,电脑运行、游戏渲染时几乎不费吹灰之力。

  • 用途: 游戏中的实时渲染角色、背景建筑、远景物体(LOD),或者作为进阶雕刻和细分的基础框架

2. 什么是“高模”?(High-Poly)

  • 定义: 拥有成千上万甚至数百万个微小多边形面、细节极其丰富的模型。

  • 特点:

    • 表面圆润细腻,能展现出极其逼真的凹凸、褶皱、裂纹和微观质感。

    • 文件体积巨大,直接在视口中操作容易导致电脑卡顿。

  • 用途: 近景特写镜头、影视级渲染,或者专门用来烘焙法线贴图(Normal Map)的母版。

3. “把低模打碎”是什么意思?

前面提到的“把低模打碎”,并不是指把物体真的炸成一地碎渣,而是一个形象的比喻,指的是:

通过“表面细分(Subdivision Surface)”和“置换(Displace)”等修改器,把一个原本只有几个粗糙大面的低模,瞬间切分、加密成拥有密密麻麻无数个细小面的高模的过程。

  • 具体转化过程:

    1. 你用 Rock Generator 生成的初始石头,面数通常很低(长得比较规整、有棱有角),这就是低模

    2. 当你加上 Subdivision Surface 后,Blender 会在低模原本稀疏的面与面之间“插值”插入大量的新顶点,把大面切成无数个小面(网格被“加密/打碎”了)。

    3. 接着,底下的 Displace 修改器 就能抓住这些密密麻麻的新顶点,把它们往不同的方向推拉,雕刻出丰富的岩石凹凸。

    4. 最终,原本简陋的低模就蜕变成了细节满满的高模

这种“非破坏性”的工作流好处在于:无论细分和置换叠加了多少层,你随时可以关掉修改器,回到最初那个只有几个点的最简单的“低模”状态去重新调整大轮廓。

 

posted on 2026-08-01 15:27  ZhangZhihuiAAA  阅读(3)  评论(0)    收藏  举报