当前位置: 首页 > news >正文

域名购买成功后网站怎么建设云南昆明百度推广

域名购买成功后网站怎么建设,云南昆明百度推广,重庆彭水网站建设,网站推广网站策划目录 说在前面问题提出Rapier具体实现参考 说在前面 操作系统#xff1a;win11rust版本#xff1a;rustc 1.77.0-nightlybevy版本#xff1a;0.12 问题提出 在three.js中#xff0c;可以通过使用ConvexGeometry从给定的三维点集合生成凸包(Convex Hull) import { ConvexGeo… 目录 说在前面问题提出Rapier具体实现参考 说在前面 操作系统win11rust版本rustc 1.77.0-nightlybevy版本0.12 问题提出 在three.js中可以通过使用ConvexGeometry从给定的三维点集合生成凸包(Convex Hull) import { ConvexGeometry } from three/addons/geometries/ConvexGeometry.js;例如 const geometry new ConvexGeometry( points ); const material new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); const mesh new THREE.Mesh( geometry, material ); scene.add( mesh );但是在bevy中如何实现呢 Rapier 在当前bevy的版本中并没有类似的实现目前支持的shape也比three.js少 BoxCapsuleCircleCubeCylinderIcospherePlaneQuadRegularPolygonTorusUVSphere 所以如果要构造ConvexHull只能借助第三方库或者自己实现可以参考three.js实现这里我们借助一个物理库rapier来实现关于rapier 这里 具体实现 首先我们通过点集构造ConvexHullrapier可以直接完成这一步 let collider Collider::convex_hull(points);但是该方法构造的是一个Collider实际上是无法直接当成Mesh使用的 然后我们将其转换成ConvexPolyhedron let convex c.as_convex_polyhedron().unwrap();该结构中包含一个凸包的所有属性例如点、边、面等事实上它提供了一个方法能够直接转换成TriangleMesh所需要的数据 impl ConvexPolyhedron {/// Discretize the boundary of this convex polyhedron as a triangle-mesh.pub fn to_trimesh(self) - (VecPoint3Real, Vec[u32; 3]) {let mut indices Vec::new();for face in self.faces() {let i1 face.first_vertex_or_edge;let i2 i1 face.num_vertices_or_edges;let first_id self.vertices_adj_to_face()[i1 as usize] as u32;for idx in self.vertices_adj_to_face()[i1 as usize 1..i2 as usize].windows(2) {indices.push([first_id, idx[0] as u32, idx[1] as u32]);}}(self.points().to_vec(), indices)} }但是不包含normal数据导致光照对其没有作用 所以我们需要自己实现一个相似的方法首先我们来看看测试数据实际上它有20个点共12个面每个面是一个正五边形所以使用TriangleMesh来表达的话一共是36个三角形 再让我们来看看bevy中构造一个TriangleMesh需要哪些数据 fn create_simple_parallelogram() - Mesh {// Create a new mesh using a triangle list topology, where each set of 3 vertices composes a triangle.Mesh::new(PrimitiveTopology::TriangleList)// 顶点数据.with_inserted_attribute(Mesh::ATTRIBUTE_POSITION,vec![[0.0, 0.0, 0.0], [1.0, 2.0, 0.0], [2.0, 2.0, 0.0], [1.0, 0.0, 0.0]])// uv数据 在本文中我们并不需要.with_inserted_attribute(Mesh::ATTRIBUTE_UV_0,vec![[0.0, 1.0], [0.5, 0.0], [1.0, 0.0], [0.5, 1.0]])// 法线.with_inserted_attribute(Mesh::ATTRIBUTE_NORMAL,vec![[0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0], [0.0, 0.0, 1.0]])// 三角形的顶点索引.with_indices(Some(Indices::U32(vec![0, 3, 1,1, 3, 2]))) }对比我们需要的数据以及to_trimesh方法发现我们少了normal数据不过这个数据在face中就有那么所有条件就具备了 完整代码 let plist: Vecf32 vec![0., 3.568220853805542, 9.341723442077637, 5.773502826690674, 5.773502826690674, 5.773502826690674, -5.773502826690674, 5.773502826690674, 5.773502826690674, 3.568220853805542, 9.341723442077637, 0., -3.568220853805542, 9.341723442077637, 0., 9.341723442077637, 0., 3.568220853805542, 9.341723442077637, 0., -3.568220853805542, 5.773502826690674, 5.773502826690674, -5.773502826690674, 5.773502826690674, -5.773502826690674, -5.773502826690674, 0., -3.568220853805542, -9.341723442077637, 0., 3.568220853805542, -9.341723442077637, -5.773502826690674, -5.773502826690674, -5.773502826690674, -9.341723442077637, 0., -3.568220853805542, -5.773502826690674, 5.773502826690674, -5.773502826690674, -3.568220853805542, -9.341723442077637, 0., -5.773502826690674, -5.773502826690674, 5.773502826690674, -9.341723442077637, 0., 3.568220853805542, 0., -3.568220853805542, 9.341723442077637, 3.568220853805542, -9.341723442077637, 0., 5.773502826690674, -5.773502826690674, 5.773502826690674]; let points: VecVec3 plist.array_chunks().into_iter().map(|v: [f32; 3]| Vec3::from_array(v)).collect(); // 通过点集构造convex hull let collider Collider::convex_hull(points); if let Some(c) collider {let convex c.as_convex_polyhedron().unwrap();// 取convex hull的所有面let faces convex.raw.faces();// 取点集let points convex.raw.points();// 取映射关系let face_to_vertices convex.raw.vertices_adj_to_face();let mut positions Vec::new();// 法向量 用于处理光照let mut normals Vec::new();let mut indices Vec::new();// 遍历所有的面for face in faces {let i1 face.first_vertex_or_edge;let i2 i1 face.num_vertices_or_edges;for idx in i1..i2 {let point points[face_to_vertices[idx as usize] as usize];// 重新构造点集 points是原始点集positions.push([point.x, point.y, point.z]);// 面上的所有点的朝向与面相同normals.push([face.normal.x, face.normal.y, face.normal.z]);}for idx in i1 1..i2 - 1 {// 构造顶点索引indices.push([i1, idx as u32, idx 1 as u32]);}}// 构造Meshlet mesh Mesh::new(PrimitiveTopology::TriangleList).with_inserted_attribute(Mesh::ATTRIBUTE_POSITION, positions).with_inserted_attribute(Mesh::ATTRIBUTE_NORMAL, normals).with_indices(Some(Indices::U32(indices.concat())));commands.spawn(PbrBundle {mesh: meshes.add(mesh),material: materials.add(Color::rgb_u8(124, 144, 255).into()),transform: Transform::from_xyz(0.0, 1., 0.0).with_scale(Vec3::new(0.1, 0.1, 0.1)),..default()}); }结果(gif) 参考 ConvexGeometry
http://www.zqtcl.cn/news/401605/

相关文章:

  • 苏州建设工程协会网站汶上网站建设哪家便宜
  • 湖南手机版建站系统信息做360网站优化
  • 为什么学网站开发中国猎头公司排行榜
  • 怎么给网站做api做设计找参考的设计网站有那些
  • vultr服务器做网站广州做seo整站优化公司
  • 怎么做一个门户网站婚介网站怎么做
  • 惠州做网站电话柳市哪里有做网站推广
  • 成都公司的网站制作网站建设网店名字
  • 网站备案医疗保健审批号是什么基于asp.net网站开发
  • 生活做爰网站如何用织梦做网站
  • 网站拒绝被百度收录c#+开发网站开发
  • 营销网站竞品分析报告东莞网页制作网站
  • 东莞手机手机端网站建设云企网站
  • 网站中弹出广告怎么做网站建设实践报告
  • 站长工具seo综合查询隐私查询导航网站诚信备案
  • 亳州做网站哪家好网站开发的现实意义
  • 创意视觉网站济南网站建设招标
  • 厦门市建设局报表网站南通网站建设计划书
  • 深圳网站建设_模板网站seo
  • 云虚拟主机做网站简单的电商网站开发
  • 注销网站和取消接入深圳建设工程信息价
  • 上海专业网站建设公司站霸网络中国住房和城乡建设部
  • 邯郸做移动网站找谁广西茶叶学会 网站建设
  • 湛江建设网站美乐乐网站首页如何修改
  • 小刘网站建设网络推广和优化是什么意思
  • 特卖网站设计seo优化关键词挖掘
  • 绍兴市交通建设有限公司网站陕西建设分行网站
  • 如何套用别人网站做页面自己创建app
  • 建国内外网站有什么区别永久免费视频会议服务器
  • 个人网站备案成功后怎么做网站开发要学哪些知识