Surface
[!caution]ai 生成,可能叙事逻辑和表述并不是很好,仅供参考。
参数曲面:在 (u, v) 网格上采样生成网格数据。
let surface = from_uv_func
.with_fill_by_z // 按 z 上色
.with_smooth_normals; // 预计算平滑法线;不调用则 flat shading
顶点是调用者提供的一般 local data,不会被自动中心化或平移;顶点按行主序存储:points[i * nv + j]。需要把曲面放到场景中时,用外层Transformed<Surface, G> 保存 placement,而不是修改采样坐标。
with_vertex_colors(colors)直接指定每顶点颜色;From<Surface> for MeshItem完成到MeshItem的转换;帧也可以直接保留完整的Surface输出。启用 items 的renderfeature 后,它的值级Extract在渲染侧完成转换;裸输出注册ExtractPlugin<Surface>,带 wrapper 时注册实际的完整输出类型。
从 Sphere 转成 Surface 时,球面的 canonical local 原点已经由 Sphere 的采样函数确定;Surface 不会再次执行 center,因此不会发生重复 center。若需要把参数曲面变成可直接吸收某种变换的物件,可以在明确边界处调用 bake;否则保留 wrapper,将 placement 留在外层。