首页 > 其他分享 >89. 模型边界线EdgesGeometry

89. 模型边界线EdgesGeometry

时间:2024-10-20 17:20:58浏览次数:3  
标签:const geometry 边界线 模型 THREE EdgesGeometry 89 new

借助EdgesGeometry可以给模型设置一个模型边界线。

长方体边线

先用EdgesGeometry重新计算长方体几何体,返回一个新的几何体,然后用线模型LineSegments模型渲染新的几何体即可。

const geometry = new THREE.BoxGeometry(50, 50, 50);
const material = new THREE.MeshLambertMaterial({
    color: 0x004444,
    transparent:true,
    opacity:0.5,
});
const mesh = new THREE.Mesh(geometry, material);

// 长方体作为EdgesGeometry参数创建一个新的几何体
const edges = new THREE.EdgesGeometry(geometry);
const edgesMaterial = new THREE.LineBasicMaterial({
  color: 0x00ffff,
})
const line = new THREE.LineSegments(edges, edgesMaterial);
mesh.add(line);

圆柱边线

const geometry = new THREE.CylinderGeometry(60, 60, 100, 30);
const edges = new THREE.EdgesGeometry(geometry);

相邻面法线夹角大于30度,才会显示线条

const edges = new THREE.EdgesGeometry(geometry,30);

外部gltf模型设置材质和边线

loader.load("../建筑模型.gltf", function (gltf) {
    // 递归遍历设置每个模型的材质,同时设置每个模型的边线
    gltf.scene.traverse(function (obj) {
        if (obj.isMesh) {
            // 模型材质重新设置
            obj.material = new THREE.MeshLambertMaterial({
                color: 0x004444,
                transparent: true,
                opacity: 0.5,
            });
            // 模型边线设置
            const edges = new THREE.EdgesGeometry(obj.geometry);
            const edgesMaterial = new THREE.LineBasicMaterial({
                color: 0x00ffff,
            })
            const line = new THREE.LineSegments(edges, edgesMaterial);
            obj.add(line);
        }
    });
    model.add(gltf.scene);
})

标签:const,geometry,边界线,模型,THREE,EdgesGeometry,89,new
From: https://blog.csdn.net/Miller777_/article/details/143095436

相关文章

  • 轮转数组——力扣189题
    力扣189题轮转数组,本身很简单,但是反复提交很多次都没有成功,实在是让人难以启齿,分析应该还是概念不清晰导致的,自以为理解得很清楚,实际确实模棱两可。把数组后几个移动到前面的位置上去,按照我最开始的想法,不过就是切片,把后半部分切下来,形成的两个半个数组再加起来不就是了吗?在py......
  • P8969 幻梦 | Dream with Dynamic
    Sol好题!注意到popcount操作会使数以\(\log\)的速度变小,所以没有加操作的话我们就可以直接暴力维护。但是注意到有加操作,考虑懒标记,先popcount后加。当一个区间popcount之后,值域范围极小,所以考虑暴力对每一种数预处理popcount。这里其实可以用线段树但是我懒了,用了分......
  • Codeforces Round 892 (Div. 2)题解记录
    题目链接:https://codeforces.com/contest/1859A.UnitedWeStand选最大的数即可注意题目输出格式 #include<iostream> #include<string.h> #include<map> #include<vector> #include<set> #include<unordered_set> #include<stack> #incl......
  • 【芯智雲城】Broadcom博通BCM5389IFBG以太网控制器应用
    Broadcom公司的BCM5389IFBG以太网控制器芯片,适用于独立的千兆以太网交换机和千兆以太网控制平面及背板应用。一、芯片特点集成度高:BCM5389IFBG将数据包缓冲区、SerDes(串行解串器)、媒体访问控制器(MAC)、地址管理和非阻塞交换结构集成到一个0.13µmCMOS器件中,减少了系统的复杂......
  • 189基于java ssm springboot网上餐厅订餐系统(源码+文档+运行视频+讲解视频)
       文章目录系列文章目录前言一、详细视频演示二、项目部分实现截图三、技术栈后端框架springboot后端框架springboot持久层框架MyBaitsPlus系统测试四、代码参考源码获取前言......
  • Codeforces Round 893 (Div. 2)题解记录
    题目链接:https://codeforces.com/contest/1858A.Buttons从自身角度出发,我想赢就得保证我的按钮尽可能多所以,大家都优先按\(c\),然后分析先后顺序即可 #include<iostream> #include<string.h> #include<map> #include<vector> #include<set> #include<unordered_set> #......
  • P11189 「KDOI-10」水杯降温
    P11189「KDOI-10」水杯降温-洛谷|计算机科学教育新生态(luogu.com.cn)庆贺吧,第一个真正意义上的自己干出来的紫题。总用时4h。时间复杂度\(O(n\logn)\),对于每个点我们去找它可以吹气的最大次数和最小次数。如果一个点的最小次数大于它的最大次数,或者在计算父节点u最......
  • springboot超市商品管理系统-计算机毕业设计源码55289
    摘 要随着信息技术的快速发展和普及,传统的超市管理模式已经无法满足现代商业的需求。为了提高超市的管理效率,优化商品销售流程,本文提出了一种基于SpringBoot框架的超市商品管理系统。该系统结合了现代软件开发技术,包括MySQL数据库、Java语言等,实现了对超市商品的全面管理。......
  • Leetcode 1489. 找到最小生成树里的关键边和伪关键边
    1.题目基本信息1.1.题目描述给你一个n个点的带权无向连通图,节点编号为0到n-1,同时还有一个数组edges,其中edges[i]=[fromi,toi,weighti]表示在fromi和toi节点之间有一条带权无向边。最小生成树(MST)是给定图中边的一个子集,它连接了所有节点且没有环,而且这些边......
  • 18933 括号匹配问题
    ###思路1.**输入处理**:读取输入的字符串。2.**匹配括号**:使用栈来匹配括号,记录无法匹配的左括号和右括号的位置。3.**标注输出**:根据记录的位置,生成标注字符串,输出原始字符串和标注字符串。###伪代码```functionprocess_string(input):  stack=[]  ma......