花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 82|回复: 54

three.js几何体之边缘几何体

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2025-5-21 12:50 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    边缘几何体 EdgesGeometry,和网格几何体 WireframeGeometry 一样,可以作为一个辅助对象用来查看其它实体几何体的边缘,不同的是,边缘几何体比网格几何体多了一个入参 thresholdAngle,用于控制两个相邻面之间的边是否需要绘制:如果两个面的法线小于该阈值,则边将不会被渲染,就是说,这个值越小,绘制的边就越多。其实现原理也是遍历Mesh几何体所有的三角面,再遍历三角面的边,若边没有被公用,则认为是边缘,会被收集。需要注意的是,作为辅助性质的几何体,边缘几何体和网格几何体一样,都需要借助其它几何体才能构图。构造器:

    EdgesGeometry( geometry : BufferGeometry, thresholdAngle : Integer )

    其中:

    geometry — 任何一个Mesh几何体对象
    thresholdAngle — 仅当相邻面的法线之间的角度(单位为角度)超过这个值时,才会渲染边缘。缺省时默认值为 1

    为了对比,以下代码我们同时绘制了边缘几何体和网格几何体,效果见预览页面:

    <div>左图: 边缘几何体<br>右图: 网格几何体<br><br>点击页面可暂停、继续动画</div>
    
    <script type="module">
    	import * as THREE from 'https://638183.freep.cn/638183/web/ku/three.module.min.js';
    
    	var scene = new THREE.Scene;
    	var clock = new THREE.Clock();
    	var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);
    	camera.position.set(0, 0, 5);
    	var renderer = new THREE.WebGLRenderer({ antialias: true });
    	renderer.setSize(window.innerWidth, window.innerHeight);
    	document.body.appendChild(renderer.domElement);
    
    	var geometry = new THREE.ExtrudeGeometry(); // 挤压缓冲几何体(默认参数)
    	
    	var edges = new THREE.EdgesGeometry(geometry, 1); // 边缘几何体
    	var mesh_edges = new THREE.LineSegments(edges, new THREE.LineBasicMaterial()); // 构图
    	mesh_edges.position.set(-1, 0, 0); // 往左靠
    	
    	var wireframe = new THREE.WireframeGeometry(geometry); // 网格几何体
    	var mesh_wireframe = new THREE.LineSegments(wireframe, new THREE.LineBasicMaterial()); // 构图
    	mesh_wireframe.position.set(1, 0, 0); // 往右靠
    
    	scene.add(mesh_edges, mesh_wireframe); // 两个图形加入场景
    
    	var animate = () => {
    		requestAnimationFrame(animate);
    		var delta = clock.getDelta();
    		[mesh_edges, mesh_wireframe].forEach(mesh => mesh.rotation.y -= delta / 5);
    		renderer.render(scene, camera);
    	};
    
    	document.onclick = () => clock.running ? clock.stop() : clock.start();
    
    	window.onresize = () => {
    		camera.aspect = window.innerWidth / window.innerHeight;
    		camera.updateProjectionMatrix();
    		renderer.setSize(window.innerWidth, window.innerHeight);
    	}
    
    	animate();
    </script>
    
    <style>
    	/* 预览页面CSS */
    	body { margin: 0; }
    	div { margin: 10px; position: absolute; color: #eee; }
    </style>
    

    评分

    参与人数 3威望 +110 金钱 +220 经验 +110 收起 理由
    红影 + 50 + 100 + 50 赞一个!
    花飞飞 + 30 + 60 + 30 很给力!
    梦江南 + 30 + 60 + 30 很给力!

    查看全部评分

  • TA的每日心情
    开心
    2025-12-14 08:25
  • 签到天数: 600 天

    [LV.9]以坛为家II

    379

    主题

    1万

    回帖

    3万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪缤纷心情心曲飞扬花好月圆飞龙在天音画大师花潮贵宾

    发表于 2025-5-21 15:42 | 显示全部楼层
    两只白色线条组成的方框体,右边一只方框多了几条线。自动旋转,一键暂停。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 19:29 | 显示全部楼层
    梦江南 发表于 2025-5-21 15:42
    两只白色线条组成的方框体,右边一只方框多了几条线。自动旋转,一键暂停。

    这只是外观。如果有余力,可以尝试理解
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-5-21 20:55 | 显示全部楼层
    两个几何体位置左靠右靠,是mesh_edges.position.set(-1, 0, 0);这个新的设置方法。。
    Mesh几何体对象又是一个新名词,
    乐,看得晕乎乎的。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 20:58 | 显示全部楼层
    花飞飞 发表于 2025-5-21 20:55
    两个几何体位置左靠右靠,是mesh_edges.position.set(-1, 0, 0);这个新的设置方法。。
    Mesh几何体对象又是 ...

    这个不新,之前用过,你看得不够细
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-5-21 20:58 | 显示全部楼层
    边缘几何体可查看其它实体几何体的边缘,也就是除了展示出的立方体,之前的网格几何体都可以适用么。
    越来越多新名词,烧脑。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 20:59 | 显示全部楼层
    花飞飞 发表于 2025-5-21 20:58
    边缘几何体可查看其它实体几何体的边缘,也就是除了展示出的立方体,之前的网格几何体都可以适用么。
    越来 ...

    其实不烧脑的,只有头脑清晰
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-5-21 21:01 | 显示全部楼层
    马黑黑 发表于 2025-5-21 20:58
    这个不新,之前用过,你看得不够细

    好吧
    之前只留意第9行的相机位置camera.position.set(0, 0, 5);
    这个左右靠的确头一 次看到。。。
    没认真学习。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-5-21 21:02 | 显示全部楼层
    马黑黑 发表于 2025-5-21 20:59
    其实不烧脑的,只有头脑清晰

    这些名词跟你都是朋友,我都不认识他们。分不清谁是谁也正常不是
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 21:03 | 显示全部楼层
    花飞飞 发表于 2025-5-21 21:01
    好吧
    之前只留意第9行的相机位置camera.position.set(0, 0, 5);
    这个左右靠的确头一 次看到。。。

    东西太多,看不到位、看不懂正常
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 21:03 | 显示全部楼层
    花飞飞 发表于 2025-5-21 21:02
    这些名词跟你都是朋友,我都不认识他们。分不清谁是谁也正常不是

    都是常用的东东,初中英语基础得有
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-5-21 21:05 | 显示全部楼层
    马黑黑 发表于 2025-5-21 21:03
    东西太多,看不到位、看不懂正常

    只看效果好看就好了。。
    比如我会用冰箱就好了,工作原理就算了。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-8-5 16:33
  • 签到天数: 44 天

    [LV.5]常住居民I

    62

    主题

    1万

    回帖

    2万

    积分

    贵宾

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮美女流光溢彩优雅神秘花潮贵宾

    发表于 2025-5-21 21:07 | 显示全部楼层
    马黑黑 发表于 2025-5-21 21:03
    都是常用的东东,初中英语基础得有

    早说了我文盲,真的没有初中水平。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 21:49 | 显示全部楼层
    花飞飞 发表于 2025-5-21 21:07
    早说了我文盲,真的没有初中水平。。

    英文方面很多人都是文盲
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-21 21:51 | 显示全部楼层
    花飞飞 发表于 2025-5-21 21:05
    只看效果好看就好了。。
    比如我会用冰箱就好了,工作原理就算了。。

    原理不知道也会有问题,比方一年四季如何调整冰箱的工作档位,很多人就是看了介绍,过阵子还是会调错,原因之一是不懂其工作原理
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-5-21 23:16 | 显示全部楼层
    这个很难理解,为什么法线之差越小,绘制的边缘越多,感觉应该是越大两个面更折,边缘应该越多啊。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-5-21 23:18 | 显示全部楼层
    如果两个相邻面的法线差是0,就是平面,怎么还会有边缘啊
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2025-5-21 23:20 | 显示全部楼层
    “再遍历三角面的边,若边没有被公用,则认为是边缘”这个好像也是反的,公用才有边缘?
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-22 07:31 | 显示全部楼层
    红影 发表于 2025-5-21 23:20
    “再遍历三角面的边,若边没有被公用,则认为是边缘”这个好像也是反的,公用才有边缘?

    你比较一下网格几何体,试图领会。这是three.js设计好的东东,我们要做的是尽可能去理解,而非质疑,除非确实是错误(若此,可以提交官网或私聊作者)。

    另外,有一些几何体可能并不常用,或者可能过于复杂使用难度较大。不论如何,作为介绍,我只是尽可能地不遗漏。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2025-5-22 07:32 | 显示全部楼层
    红影 发表于 2025-5-21 23:16
    这个很难理解,为什么法线之差越小,绘制的边缘越多,感觉应该是越大两个面更折,边缘应该越多啊。

    具体进入three.js的殿堂之后,很多东东都会迎刃而解
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-15 01:21 , Processed in 0.115730 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表