情况
我正在实现一个高度字段编辑器,有两个视图。主视图在3D中显示高度字段,启用轨迹球导航。编辑视图将高度字段显示为2D图像 在这个高度场的顶部,可以应用新图像,改变其外观(切孔,下部,上升区域)。这称为补丁 Bouth高度字段和补丁是一个通道灰度png图像。
对于可视化,我使用 visualisation library 框架(c ++)和OpenGL 4。
任务
实现在2D编辑视图(正交投影)中可用的绘图工具,该工具在运行时创建此修补程序(作为单独的图像)。
重要说明/约束
问题 这项任务的正确方法是什么?到目前为止,我有以下想法:
答案 0 :(得分:1)
这是我的努力:
我使用可视化库的PickIntersector在编辑视图中再次选择高度场图像。 这是图像的当地协调。 有转换为uv coords,它们又转变为像素坐标。 这是在用户按下鼠标按钮时完成的,并且当鼠标在图像上方移动时继续发生。
我有一个PatchCanvas类,它收集所有这些点。在命令上,它使用Anti-Grain Geometry库来精确地栅格化可以从点构造的线。
完成此操作后,栅格化图像将被分割为固定大小的网格。扫描每个瓷砖的颜色与中性瓷砖的颜色不同。仅包含中性色的瓷砖掉落。另一个是在适当的命名模式之后保存的,可以在下一帧中加载。
Agg支持不同大小的行。这个没有实现jet,但是想法是选择屏幕空间中的相邻点,获取那些uv coords,将它们转换为像素并将其用作线条粗细。这应该会导致更大的strockes缩小视图。