参考这个教学
1:
-> 2:
-> 3:
-> 4:
-> 5: 
- 制作道路:
- 制作随机网格: 随机2, 3层细分
- 用二层 subdivide Mesh
- 随机选一些内部网格 (Separate Geometry Node -> Face ) 再进行一层subdivide
- 输入Boolean的随机值
- 输出选中的和未选中的不同处理
- 用Join Gemetry Node 融合在一起
- 制作随机扭曲: 把随机的mesh merge在一起
- 用Merge by Distance Node 融合: 输入Boolean的随机值, distance选择0.26( 稍 > 2级细分, 即1/4)
- 再次用0.01的distance 融合: 去除重复的边
- 把网格转成道路
- mesh转成折线curve: Mesh to Curve
- 折线curve转成圆角曲线: Fillet Curve (类似Bevel倒角的效果)
- Count 控制中间点的个数, Radius控制圆角弧度大小, 选择Limit Radius 保证圆角起终点不会超出范围(什么情况是需要超出范围的吗? 这个选项总是要选)
- 转成道路: Curve to Mesh (效果为Curve沿Profile Curve 挤出)
- Curve 处输入我们的道路curve
- Profile Curve 处用Curve Line 输入一个固定长度线段Curve
- 增加厚度: Extrude Mesh Node 沿面的法相挤出
- 关闭自动的Smooth Shading: Set Shade Smooth Node
- 制作随机网格: 随机2, 3层细分
1:
-> 2:
-> 3:
-> 4: 
- 制作建筑物: 安插在道路网格的间隙
- 制作底座: 把折线道路(道路步骤2的结果)向内挤出
- Extrude Mesh Node 沿面的法相挤出, 但是厚度为0
- 选中输出
Top(新生成的面)向内scale
- 制作楼体:
- 把底座内部向上拉伸
- 去掉第一步制作底座时没用的mesh, 只保留底座拉伸部分
- 制作屋顶:
- 选中楼体顶部:
- Normal Node + Spearate XYZ Node 的
Z输出, 连接到 Extrude Mesh Node 的Selection上 - 另一种方法是直接选中楼体时的
Top输出, 连接到 Extrude Mesh Node 的Selection上
- Normal Node + Spearate XYZ Node 的
- 把楼体顶部向下向内挤出(和上一步制作楼体的方法一样)
- 选中楼体顶部:
- 把街区内部进一步切分, 和道路放在一起
- 制作底座: 把折线道路(道路步骤2的结果)向内挤出

- shading: 在cycles渲染模式下
- world: 添加一个Sky Texture, 适当调整参数
- object:
- 楼体: 每幢楼随机两个贴图
- 用Geometry Node 的random per Island(每个connected component随机) 的功能 + constant Color Ramp(把数值映射成 0 或 1 )
- mix shader混合
- 楼顶: 用Geometry Node 的normal + Spearate XYZ Node 的
Z输出, 选中楼顶
- 楼体: 每幢楼随机两个贴图
texture Coordinate 的设置
- 我们用Image Texture 设置颜色的映射时, 把默认的 flat 改为 box
- flat的映射:
Sphere的映射方法: 
- flat的映射:
用到的blender的一些快捷键功能
- 打开关闭侧边 Transform栏: N
- Object Mode:
- Apply(应用变形): Command + A
- 比例尺(Apply Scale): 应用后, 物体上的变换, 由比例变成实际距离?
- 比如400scale的物体, 应用前 0.1 的变换, 和应用后40m的变换等价
- blender的滑块单位是0.1, 可能是有时候物体太大, 按比例调整不方便?
- 比例尺(Apply Scale): 应用后, 物体上的变换, 由比例变成实际距离?
- Apply(应用变形): Command + A
- Geometry Nodes合并成group
- 在原有Node输入的地方可以加input Node
- input Node的参数不能改名字
- Node内部的参数不能改成输入😮💨
- 在原有Node输入的地方可以加input Node