3D 相机、交互与立体导出
3D 图形使用透视相机和 WebGL 渲染,但几何世界坐标不会因视角改变。旋转、缩放与视角恢复只影响观察方式,不改写 Eidolang 对象。
相机控制
- 在空白区域拖动:环绕当前相机目标。
- 滚轮或双指捏合:向指针附近缩放。
- 平移视图:鼠标右键拖动,或按住 Shift / Ctrl 再用左键拖动;触屏上用双指同时移动。相机与环绕中心一起移动。
- 点按角落方向轴:弹出视图菜单。重置视图让目标回到原点并恢复初始距离;选中对象时还会出现环绕选中对象,它把环绕中心移到所选对象的中心(视线方向与距离不变),之后旋转都围绕该对象进行。
- 角落方向轴显示世界 x/y/z,其中 z 轴向上。
相机位置与目标在切换图形时保存在本机视图状态,返回图形时恢复;它们不写入 .eido。缩放距离受当前项目的 3D 最小/最大视距限制。
选择与拖动 3D 点
指针工具下,点按对象进行选择。拾取优先级是点、线性对象、表面/实体,因此透明球体内部的点仍可选择。
- 自由
point3在面向相机的平面中拖动; - 绑定点沿 segment3/line3/ray3 移动;
- 球面绑定点沿球面移动;
- 派生点不能直接拖动。
开启自动吸附后,自由点靠近已有点会坐标吸附,靠近线性承载对象或球面会改写成绑定点。目标在释放前高亮。
3D 绘图工具
Point3 在世界 z = 0 地面上放置点;按下后竖直拖动可创建非零 z 坐标。Segment3、Sphere、Cylinder、Cone 等工具通过已有点或新控制点构造对象,并显示虚线/线框预览。状态栏的 落点 z 按钮可设置新点落下的高度:输入数值、回到地面 (0),或取选中点的 z。网格会升到该高度,x/y 轴仍留在 z = 0。
展开「线性对象」可选择「空间直线」(L),点选两个位置不同的点;展开「平面图形与截面」可选择「平面」,点选三个不共线的点。点击没有点的位置会在落点平面(落点 z 的高度,默认 z = 0)上或附近对象上新建一个点,并随构造一起写入;需要不在地面上的点时,可先用 Point3 创建或抬高。点选支持 Backspace 撤回、Esc 取消;创建成功后可一次撤销。
所建直线可作为「旋转」工具的轴线,平面可作为「平面截面」工具的截平面。长方体、棱柱、棱锥与棱台归入「多面体」,圆柱、圆锥与圆台归入「柱锥台体」,球及其部分归入「球与球体部分」。更多工具的分类与点选顺序见几何构造。也可从 3D 示例项目开始修改。
自适应网格和尺寸
网格步长随相机距离按 1-2-5 级数调整,角落图例显示当前单位。地面网格没有边界:平移时跟随视野,并向地平线逐渐淡出。无限直线和平面的显示范围也随视距增长。点、交点标记和标签保持近似恒定的屏幕尺寸,因此远近视图仍容易点击。
3D PNG
PNG 读取当前 WebGL 渲染结果:
- 当前视图保留实时相机构图;
- 适合内容保留观察方向,但临时居中并后退相机以容纳完整模型;
- 可选 1×/2×/4× 像素倍率;
- 可关闭地面网格与方向轴;
- 3D 始终渲染背景,不支持透明背景。
3D SVG
3D SVG 不是画布截图。Eidograph 从当前评估模型和相机重新生成线框/轮廓投影:线与曲线成为投影折线,实体输出边线和解析轮廓,曲面输出等参网格,并带半透明面填充。
当前没有隐藏线消除;对象按深度近似排序,因此复杂重叠模型可能与实体 WebGL 画面不同。SVG 适合示意图和矢量排版,不是工程制图投影。
3D GIF 与 MP4
GIF 与 MP4 可以使用脚本的 animate/stage 时间线,也可以自动环绕相机。适合内容会在不改变已保存相机的前提下围绕模型建立临时导出相机。导出完成后交互视角保持不变。两种格式渲染同样的帧;相同环绕时长下 MP4 的文件明显更小。
若文件太大,请降低帧率、像素倍率或动画时长;曲面 samples 较高时也会明显增加逐帧渲染成本。
