wireframe,prototype,mockup有何不同?

本文解析wireframe(线框图)、mockup(视觉稿)与prototype(可操作原型)的区别,探讨各自在产品设计周期中的角色与价值。wireframe关注功能布局,mockup侧重视觉细节,prototype模拟用户交互,三者共同推动产品迭代与优化。

wireframe,prototype,mockup 三者经常被混用,很多人把三者都叫原型,真的是这样吗?

我们来看看三者到底有何不同。先来做一道选择题:

教程:wireframe,prototype,mockup有何不同?

从这张图可以看出,prototype 和其他两者的不同之处在于是否可交互,可点击,prototype 是动态的;而 wireframe 和 mockup 则是静态的。wireframe 和 mockup 之间的区别则在于是否高保真。

 

wireframe 之于 prototype 就像建筑蓝图之于样板房

教程:wireframe,prototype,mockup有何不同?

wireframe——不关注外观,只关注功能

  • wireframe 中文称「线框图」,用来表达产品的概念、产品架构、内容优先级、页面布局和操作逻辑。它专注于产品的主要功能和在不同的场景中该如何操作,因此视觉元素应尽量简化,甚至不需要考虑,用色以黑白灰为主,最多再加上蓝色,蓝色通常用于导航栏与下方区块的区分。它是低保真的。

     

    可以在纸上手绘

    (Source:galynbunnell)

    教程:wireframe,prototype,mockup有何不同?

  • 可以白板上随便涂鸦

    (Source: Bradley Hawkins)

    教程:wireframe,prototype,mockup有何不同?

  • 也可以用软件工具制作

    (用「墨刀」制作的线框图)

    教程:wireframe,prototype,mockup有何不同?

  • 它就像是一个城市的地图导览,只负责展示这个城市的大体框架,用它导航,可以清楚整个城市的布局,但无法领略具体的美,那些深藏在城市各个角落中的细节之美。

     

    wireframe 是一种沟通工具,主要任务是快速视觉化产品概念,让团队成员快速了解产品概念,进而展开讨论,迅速搜集到来自大家的反馈。搜集反馈是为了改进产品,因此它不是产品的最终版本,讨论中搜集到的反馈可能会让产品改动很大,这也是为什么不需要太多考虑视觉细节部分的原因,因为反正还要改的。

     

    wireframe 关键词:

    教程:wireframe,prototype,mockup有何不同?

Mockup——呈现丰富的视觉细节

  • Mockup 为「视觉稿」,用于呈现产品整体的视觉设计,在 wireframe(线框图)的基础上增加了更丰富的视觉元素,包含图形、排版、配色等比较细节的视觉呈现,基本上就是等同于产品的最终设计稿了。

     

    和 wireframe(线框图)一样,Mockup 也是静态的,不可操作。它专注产品的外观,加入了丰富的视觉元素,保真度高。

     

    Mockup 呈现丰富的细节,经常用于视觉设计讨论中,用于快速搜集产品视觉设计方面的反馈并加以改进。

     

    在 dribbble 上搜了一下,长这样

    教程:wireframe,prototype,mockup有何不同?

  •  Mockup 关键词:

    教程:wireframe,prototype,mockup有何不同?

Prototype——可操作的原型

  • Prototype 中文「原型」,是指可操作的原型,比较真实地模拟了用户与 UI 界面之间的互动,通过这种方式在产品早期挖掘存在的潜在问题,并及时进行修正,帮助设计师不断验证-修正自己对于产品的想法。

     

    高保真原型 vs 低保真原型

    当把多张 Mockup (视觉稿)图制作成可操作的模型,这时候 Mockup 就化为了 prototype,我们称作是高保真原型

    当把多张 wireframe(线框图)制作成可操作的模型,这时候 wireframe 就化为了 prototype。我们称作是低保真原型

    Prototype 最重要的特性就是可操作性,判断是不是 prototype 的标准就是是不是可以动可操作。

     

    因为原型的关键词是可动可操作,因此像 ps 做出来的输出稿一般不是原型,而用墨刀实现的输出稿就是原型了,如下图所示:

    教程:wireframe,prototype,mockup有何不同?

  • prototype 关键词

    教程:wireframe,prototype,mockup有何不同?

总结

  • Wireframe,prototype,mockup 各有优缺点和不尽相同的使用场景,无论是产品经理还是产品设计师,在对的阶段做对的事至关重要。在产品的不同阶段使用不同的输出稿,避免时间精力的浪费,快速输出想法,迅速接受反馈及时对产品设计进行修正和验证,加快产品的迭代流程,降低大规模地回头修改,是作为一名合格产品经理的基本素养。

 

<think>我们正在讨论Three.js中的两种几体:EdgesGeometry和WireframeGeometry。它们都用于线框表示,但实现方式和目的有本质区别。 首先,回顾一下用户提供的引用: 引用[1]和[2]提到,EdgesGeometry和WireframeGeometry是Three.js提供的两种几体,它们通常作为辅助功能使用。 引用[3]提到,所有几体都是由三角形组成,并简单提及了这两种几体。 现在,我将从技术实现的角度分析两者的区别: 1. **WireframeGeometry**: - 它的目的是将几体的每一个面(三角形)用线框表示出来,即画出每个三角形的三条边。 - 实现方式:遍历几体的每个面(三角形),然后为每个三角形的三条边创建线段。这样,每个三角形都会有三条边,相邻的三角形之间会画出公共边两次(但实际上由于重叠,视觉上看起来是一条,但实际是两条线段叠加)。 - 结果:整个模型的所有三角形边都会被绘制,形成一个密集的线网。这会导致在模型内部和外部都看到很多线,尤其是当模型是实心的时候,内部线框也会被显示出来(除非使用深度测试等技巧隐藏)。 2. **EdgesGeometry**: - 它的目的是只提取几体中的“边缘”。这里的边缘是指两个相邻面之间的夹角大于某个阈值(由`thresholdAngle`参数控制)的边。 - 实现方式:遍历几体的所有边(注意,几体是由三角形组成的,所以边是共享的),计算共享这条边的两个面的法向量之间的夹角。如果这个夹角大于设定的阈值角度,则认为这条边是“边缘”,并将其加入线框几体中。 - 结果:只有模型轮廓和尖锐转折处的边会被显示,而平坦区域的内部边则不会被显示。这样得到的线框更简洁,通常用于显示模型的轮廓和主要结构。 本质区别总结如下表: | 特性 | WireframeGeometry | EdgesGeometry | |---------------------|---------------------------------------|---------------------------------------------| | **生成方式** | 提取所有三角形的边 | 仅提取相邻面夹角大于阈值的边 | | **视觉密度** | 高(所有边都显示) | 低(只显示轮廓和锐利边缘) | | **主要用途** | 查看模型的三角面片结构 | 突出模型的轮廓和硬边 | | **参数控制** | 无参数 | 可设置阈值角度(`thresholdAngle`) | | **内部边是否显示** | 是(包括内部三角面的边) | 否(只显示外部轮廓和尖锐边缘) | | **性能** | 线段数量多,性能开销相对较大 | 线段数量少,性能开销相对较小 | 数学原理: 在EdgesGeometry中,判断一条边是否为边缘的依据是两个相邻面的法向量夹角。设两个面的法向量分别为$\vec{n_1}$和$\vec{n_2}$,则夹角$\theta$可以通过点积公式计算: $$\theta = \arccos\left(\frac{\vec{n_1} \cdot \vec{n_2}}{|\vec{n_1}| \cdot |\vec{n_2}|}\right)$$ 如果$\theta$大于设定的阈值角度(以度为单位),则该边被保留。 而WireframeGeometry没有这样的计算,它只是简单地将每个三角形的三个边都提取出来。 因此,选择使用哪种线框几体取决于需求: - 如果需要查看模型的网格拓扑,使用WireframeGeometry。 - 如果只需要模型的轮廓和硬边,使用EdgesGeometry。 最后,根据用户的要求,生成相关问题。 注意:在回答中,我们引用了用户提供的引用,所以需要在适当位置添加引用标识[^1][^2][^3]。 </think>### EdgesGeometry 与 WireframeGeometry 的本质区别 在 Three.js 中,`EdgesGeometry` 和 `WireframeGeometry` 虽然都用于生成线框效果,但它们在**技术实现原理**和**应用场景**上存在根本性差异: #### 1. 几结构生成原理 | **特性** | `EdgesGeometry` | `WireframeGeometry` | |----------------------|-------------------------------------|------------------------------------| | **数据源** | 基于面法线夹角计算 | 直接提取三角形边 | | **核心算法** | 计算相邻三角面的法线夹角 $\theta$:<br>$ \theta = \arccos(\vec{n_1} \cdot \vec{n_2}) $ | 遍历所有三角面的三条边 | | **输出内容** | 仅夹角 $\theta >$ `thresholdAngle` 的边 | 所有三角面的完整边线 | | **拓扑保留** | 保留模型轮廓特征 | 完整保留网格拓扑 | #### 2. 视觉表现差异 ```javascript // 对比示例 const model = new THREE.SphereGeometry(5, 32, 16); // EdgesGeometry:仅锐利边缘 const edges = new THREE.EdgesGeometry(model, { thresholdAngle: 30 }); // WireframeGeometry:完整三角网 const wireframe = new THREE.WireframeGeometry(model); ``` - **`EdgesGeometry` 效果**: 仅显示轮廓和硬边(如立方体棱角、曲面转折处),类似技术绘图中的"轮廓线"[^1] - **`WireframeGeometry` 效果**: 显示所有三角面边界(包括内部结构),类似网格拓扑视图[^3] #### 3. 数学本质差异 | **几类型** | 数学描述 | |--------------------|--------------------------------------------------------------------------| | **EdgesGeometry** | 边集 $E = \{ e \| \theta_e > \alpha \}$<br>其中 $\alpha$ 为 `thresholdAngle` | | **WireframeGeometry** | 边集 $E = \bigcup\limits_{t \in T} \partial t$<br>$T$ 为所有三角面集合 | #### 4. 性能与适用场景 | **维度** | `EdgesGeometry` | `WireframeGeometry` | |------------------|--------------------------------------|-----------------------------------| | **计算开销** | 需计算法线夹角,较高 | 直接提取边,较低 | | **模型复杂度** | 适合高模(可简化边缘) | 适合低模(展示完整结构) | | **典型应用** | 轮廓强调、非真实感渲染(NPR) | 拓扑分析、建模辅助[^2] | | **实时交互** | 阈值可动态调整 | 固定拓扑结构 | #### 5. 实现源码关键差异 ```cpp // EdgesGeometry 核心逻辑 (简化版) for (each edge shared by two faces) { float angle = dot(face1.normal, face2.normal); if (acos(angle) > thresholdAngle) addEdgeToGeometry(); } // WireframeGeometry 核心逻辑 (简化版) for (each triangle in geometry) { addLine(triangle.a, triangle.b); addLine(triangle.b, triangle.c); addLine(triangle.c, triangle.a); } ``` > ⚠️ **注意事项** > - `EdgesGeometry` 依赖正确的面法线,需确保执行过 `geometry.computeVertexNormals()`[^3] > - `WireframeGeometry` 在细分曲面中会产生密集线条(如 `SphereGeometry(32,32)`) > - 两者均需配合 `LineBasicMaterial` 或 `LineDashedMaterial` 使用 通过理解这些本质区别,开发者可根据需求选择:需要**简洁轮廓线**时用 `EdgesGeometry`;需要**完整网格分析**时用 `WireframeGeometry`[^1][^2]。 --- ### 相关问题 1. 如在 `EdgesGeometry` 中实现动态阈值调整以响应模型变形? 2. 使用 `WireframeGeometry` 时如避免内部结构线框的视觉干扰? 3. `EdgesGeometry` 的阈值角度算法在 GPU 中如优化实现? 4. 两种线框几体在 Three.js 渲染管线中的处理流程有不同
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值