三维数据模型(3D data models)是用于表示三维空间中的物体和场景的计算机数据结构。常见的三维数据模型包括以下几种:
这里仅做简单的科普介绍,如要深入了解可以看我之前的这篇笔记https://www.luxd.space/posts/%E5%87%A0%E4%BD%95.html,或者虎皮书Fundamenttals of Computer Graphs的第十二章Data structures for Graphis也有相关知识的深入讲解
多边形网格是一种常见的三维模型表示方法,通常采用三角形或四边形作为基本元素。多边形网格由顶点(vertices)、边(edges)和面(faces)组成。顶点记录三维坐标信息,边连接顶点,而面则由边围成。多边形网格可以表示各种复杂的三维物体,例如在计算机图形学和游戏开发中广泛使用
大多数现实世界的模型都由共享顶点的三角形组成。这些通常被称为三角形网格或三角不规则网(TIN),有效处理它们对许多图形程序的性能至关重要。
体素模型是一种将三维空间离散化为规则的体素(Voxels,体素即Volume Pixels)格子的表示方法。每个体素可以存储颜色、密度等属性数据。体素模型通常用于表示具有内部结构的物体,如医学影像(CT、MRI)和地质数据等领域。
参数化表面是通过数学函数或参数方程来定义的表面。常见的参数化表面有NURBS(非均匀有理B样条曲面)和Bezier曲面等。参数化表面具有良好的数学性质,便于精确控制几何形状。它们在计算机辅助设计(CAD)和建筑设计等领域得到了广泛应用。
隐式表面是通过隐式方程定义的三维表面,例如 f ( x , y , z ) = 0 f(x, y, z) = 0 f(x,y,z)=0。隐式表面可以表示复杂数学形状,如球体、圆锥体、超平面等。在计算机图形学中,隐式表面用于实现柔和的物体融合、建模和形状变形等效果。
点云是由大量离散的三维点组成的数据结构。每个点包含了位置信息,可能还包含颜色、法向量等属性。点云通常来源于三维扫描仪或者深度相机,用于表示实际环境中的物体和场景。点云数据可以被进一步处理,生成多边形网格等其他类型的三维模型。
三维模型数据格式多种多样,常见的有OSGB,DAE,OBJ,STL,3DS,CLM,IFC,PLY等数据格式。这些主要是桌面软件所支持的数据格式,结构较为复杂,不适于网络传输,也就是意味着如果要在web端使用这些模型一般需要进行转换压缩。
OSGB(OpenSceneGraph Binary):OSGB是一种基于OpenSceneGraph(OSG)的二进制文件格式。OSGB文件可以存储三维模型的几何信息、嵌入式链接纹理数据(.jpg)和场景图层信息。OSGB格式的优点是加载速度快,支持分层级细节(LOD)技术,适用于大规模三维场景的实时渲染。(在桌面端适用的很好)
优点:
缺点:
还有就是需要构建索引才能在ContextCapture Viewer中预览所有数据块,没有索引只能一块一块的查看。
OBJ文件格式是一种常用的三维模型文件格式,它是一种人类可读的文本格式,可以包含三角形、四边形、多边形和其他几何体的描述信息。OBJ文件格式最初由 Alias|Wavefront 公司开发,用于创建三维图形和动画。
很适合用于3D软件模型之间的互导,比如Smart3D里面生成的模型需要修饰,可以输出OBJ格式,之后就可以导入到3dsMax进行处理;或者在3dsMax中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择。
目前几乎所有知名的3D软件都支持OBJ文件的读写,OBJ文件还是一种文本文件,可以直接用写字板打开进行查看和编辑修改。
OBJ文件格式通常由多个文件组成,其中包括OBJ文件(模型文件)、MTL文件和图片文件。这些文件通常被放在同一目录下,以方便引用和管理。
# 一个简单的OBJ文件格式示例
v 0.0 0.0 0.0 # 第一个顶点的位置
v 1.0 0.0 0.0 # 第二个顶点的位置
v 1.0 1.0 0.0 # 第三个顶点的位置
f 1 2 3 # 三角形面的顶点索引
OBJ文件格式的具体格式如下:
v 0.0 0.0 0.0
v 1.0 0.0 0.0
v 1.0 1.0 0.0
vn 0.0 0.0 1.0
vn 0.0 0.0 1.0
vn 0.0 0.0 1.0
vt 0.0 0.0
vt 1.0 0.0
vt 1.0 1.0
f 1/1/1 2/2/1 3/3/1
f 1/1/1 3/3/1 4/4/1
在这个例子中,顶点索引的格式是“v/vt/vn”,分别表示顶点、纹理坐标和法向量在各自列表中的索引。如果某个属性不存在,则用“-”代替。例如,如果没有纹理坐标,则格式为“v//vn”。
此外,OBJ文件格式还支持一些其他命令,例如:
# 一个MTL文件示例
newmtl material1 # 定义一个新的材质
Ka 0.2 0.2 0.2 # 环境光颜色
Kd 0.8 0.8 0.8 # 漫反射颜色
Ks 1.0 1.0 1.0 # 镜面反射颜色
map_Kd texture.jpg # 漫反射纹理贴图
示例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CQcPgYsP-1691561372691)(%E4%B8%89%E7%BB%B4%E6%B8%B2%E6%9F%93%E7%9B%B8%E5%85%B3.assets/image-20230504164123038.png#id=zbqce&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)]
FBX是一种通用的三维模型格式,由Autodesk公司开发和维护。它是一种二进制文件格式,旨在支持不同3D软件之间的数据交换和互操作性。FBX文件可以包含几何体、材质、动画、灯光、相机、约束等多种类型的数据。
FBX格式的优点之一是在不同的3D软件之间转换时的高度兼容性。许多3D软件都支持导入和导出FBX文件,包括3ds Max、Maya、Blender、Cinema 4D等。这使得FBX成为一种常见的数据交换格式,可以在不同的软件之间轻松地共享3D模型和相关的数据。
FBX还支持动画数据的存储和传输,包括关键帧动画和骨骼动画。这使得FBX成为游戏开发、影视制作等行业中常用的格式之一。在游戏开发中,开发人员可以使用FBX格式将3D模型和动画从艺术家或外部制作公司导入到游戏引擎中。
示例:https://sketchfab.com/3d-models/placeholder-cube-1-7b56b13a97df40c48d678c799d6e7231
STL是一种常用的三维模型数据格式,它是由3D Systems公司在1987年开发的。STL代表“STereoLithography”,是一种用于快速原型制造的文件格式。STL文件以二进制或ASCII格式存储,其中包含物体的表面几何信息
STL文件由一系列三角形组成,每个三角形都由三个顶点和一个法线向量定义。STL文件中的三角形数量决定了物体的精度和细节程度。STL文件中不包含材质、纹理、颜色、动画等其他信息。因此,STL文件通常用于制造原型或快速建模,而不是用于渲染或动画等高级应用。
优点:
简单性和通用性。几乎所有3D软件都支持导入和导出STL文件,因此可以在不同的软件之间轻松共享3D模型。此外,STL文件非常小,可以快速加载和处理,这使得它们在快速原型制造和3D打印等应用中非常有用。
局限性:
由于STL文件只包含表面几何信息,因此无法描述内部结构、孔洞、壳厚度等特性。另外,STL文件的精度受到三角形数量的限制,当三角形数量不足时,模型的曲面会出现锯齿状或平滑度不足的问题
3DS是3dsMax建模软件的衍生文件格式,做完MAX的场景文件后可导出成3DS格式,可与其他建模软件兼容,也可用于渲染。
优点:
局限性:
由于其二进制格式,3DS文件不容易进行版本控制和修改。此外,3DS文件的文件大小通常很大,因为它们包含了大量的数据类型和细节。另外,3DS文件的精度受到三角形数量的限制,当三角形数量不足时,模型的曲面会出现锯齿状或平滑度不足的问题。
DAE(Digital Asset Exchange)是一种基于XML的开放式三维模型交换格式,由Collada工作组开发。DAE文件包含了三维模型、材质、动画、灯光等信息,可以在不同的3D软件之间进行导入和导出。
优点:
局限性:
PLY(Polygon File Format)是一种用于存储三维模型的文件格式,由斯坦福大学图形实验室开发。PLY文件格式既可以存储三角形网格模型,也可以存储点云模型,是一种非常灵活和通用的三维模型数据格式。
优点:
局限性:
以下是常见的Web渲染引擎(Cesium、Three.js、Babylon.js、deck.gl、Mapbox GL JS)支持的三维数据格式:
Cesium:
Three.js:
Babylon.js:
deck.gl:
Mapbox GL JS:
对于Web端,因为网络传输性能的瓶颈,是不太适合直接使用桌面端常见的三维数据格式的,因为其文件通常很大,还有一些兼容性的问题,常见的Web渲染引擎也不支持。
glTF(全称为GL Transmission Format)是一种基于JSON的开放标准的三维模型文件格式,由Khronos Group开发,旨在提供一种在WebGL、OpenGL和Vulkan等3D图形API中高效传输和加载三维模型的标准格式。glTF支持几何体、材质、纹理、动画、骨骼和节点层次结构等多种三维模型和场景元素。
glTF 1.0和glTF 2.0是glTF规范的两个版本,它们之间有很多的区别和改进。下面是它们的主要区别:
.gltf是一种开放标准的三维模型文件格式,它使用JSON格式来描述三维模型的几何形状、材质、动画和其他相关信息。.gltf文件可以包含多个文件,例如二进制文件、纹理文件和其他资源文件。.gltf文件可以在WebGL和OpenGL等图形API中使用,可以在Web浏览器中直接加载和渲染。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OnHYRGvW-1691561372692)(%E4%B8%89%E7%BB%B4%E6%B8%B2%E6%9F%93%E7%9B%B8%E5%85%B3.assets/image-20230504181927988.png#id=r6Hkh&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)]
.glb是.gltf的二进制版本,它将所有的模型数据存储在一个二进制文件中,包括几何形状、材质、动画和其他相关信息。.glb文件比.gltf文件更紧凑,因为它们不需要加载多个文件
cesium示例中的glb模型:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bbj0xwjk-1691561372693)(%E4%B8%89%E7%BB%B4%E6%B8%B2%E6%9F%93%E7%9B%B8%E5%85%B3.assets/image-20230504182917773.png#id=JxpTY&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)]
3D Tiles 是 Cesium 提出的处理三维地理大数据的数据格式,从结构关系上看,3DTiles 归属于Primitive,具有很高的数据加载效率。
3D Tiles 是 Cesium 于2016 年3月定义的一种三维模型瓦片数据结构。3DTiles 将海量三维数据以分块、分层的形式组织起来,这样就大大减轻了浏览器和图形处理单元(GPU)的负担。3D Tiles数据的特点如下:
3D Tiles数据结构由两部分组成,一个是JSON格式的数据组织文件tileset.json,另外是每个瓦片节点对应的模型文件,3Dtiles支持的模型文件格式有.b3dm、.i3dm、.pnts、.vctr、.cmpt五种:
在1.0 版本的规范中,瓦片所引用的二进制的瓦片数据文件,有四种类型:.b3dm、.i3dm、.pnts、.cmpt
格式名称 | 说明 |
---|---|
Batched 3D Model( * . b3dm) | 用于具有不同几何、材质或贴图的异质模型网格 |
Instanced 3D Model( * . i3dm) | 实例化的模型,应用同一个三维模型,用于树木等相同的地物可视化 |
Point Cloud ( * . pnts) | 用于点云数据的可视化 |
Vector Data ( * . vctr) | 用手矢量数据的可视化 |
Composite( * . cmpt) | 上述几种格式的组合 |
一个tielset.json文件中最层级的对象中通常有这四个属性:
- 瓦片对象记录的就是瓦片的元数据,真正瓦片的本体数据在content所引用的二进制文件中
- 瓦片还可以再引用 3dTiles 数据集(套娃)
这里重点说说root瓦片及其children:
树结构对于三维空间数据的组织有很大的优势。3dTiles在空间上允许数据集使用如下几种树结构:
目前主要将四类三维数据格式模型 BIM、3ds Max 模型、倾斜摄影数据模型、简易三维模型生成为3D Tiles以在web端使用
3dTiles采用的是WGS84椭球,但是并未采用经纬度记录数据:因为相对于精细三维模型来说,经纬度不足以提供足够精确的空间分割(要照顾图形显示问题)。所以,同样是那个形状,3dTiles使用了同一个WGS84椭球,但是更方便计算的坐标:空间直角坐标。(三维笛卡尔坐标)
用经纬度记录数据的WGS84坐标系,WKID是4326,用地心为坐标原点的空间直角坐标来记录数据的坐标系,WKID是4979.
3dTiles 用的就是4979坐标系。
体积渲染(Volume Rendering)是一种用于可视化三维数据的技术,它通过对数据的密度、颜色和透明度进行处理,将数据转换为图像或动画。与表面渲染不同,体积渲染不需要先将数据转换为表面网格,而是直接对数据进行处理,从而能够更全面地呈现数据的内部结构。
体积渲染的原理是基于光线追踪和体积光学的原理。在渲染过程中,光线从视点出发,经过数据中的每个点,并在每个点处计算出颜色、透明度等属性,最终形成一幅图像或动画。由于数据通常是非常大的,因此需要使用高性能计算机和专用的体积渲染软件来实现。
体积渲染在医学、科学、工程、地质和气象等领域都有广泛的应用,能够帮助人们更好地理解和分析数据,以便做出更好的决策。
它原是摄影测量软件开发商 Acute3D 的主打产品,后来 Acute3D 被 Bentley 公司(没错,就是和汽车品牌宾利一个名字,但不是同一家公司)收购,更名为 ContextCapture。
它可以通过使用不同的图像和激光扫描数据,创建高精度的三维模型。ContextCapture软件可以将从无人机、航空或地面扫描仪中获取的图像和激光扫描数据进行处理,从而生成高度准确的模型。
ContextCapture具有多种功能和特点,包括:
OSGB
、OBJ
、FBX
、COLLADA
和STL
等,以便在其他软件中使用。Pix4Dmapper是一款由瑞士公司Pix4D开发的专业无人机影像处理软件,是一款专门用做测绘的软件,从数据采集(pix4Dcapture)到DOM、DSM及三维模型生产都有涉及。但是三维效果相对于samrt3D来说还是有些差距,但DOM正射影像生成更胜一筹。它可以将无人机采集的航拍图像、激光雷达数据和其他传感器数据转换为高精度的3D模型和地图。该软件的主要功能包括图像处理、点云生成和三维建模等。
Pix4Dmapper的主要特点和优势包括:
PhotoScan是由Agisoft LLC研发生产,是一款全自动生产三维模型的建模软件。我用这款软件较少,处理过少量的数据,把结果分项给大家,效果一目了然。这款软件操作简单,无特殊和难理解的参数需要设置,但是对于数据处理的容错率较低,易报错
文章浏览阅读202次。packagecode;//importjava.awt.*;//importjava.awt.Canvas;//importjava.awt.event.*;//importjavax.swing.*;importjava.util.Random;importjavax.microedition.lcdui.*;//写界面所需要的包/***//***俄罗斯方块*高雷*2007年1..._240×320java游戏
文章浏览阅读779次,点赞14次,收藏19次。然后,实现系统的数据管理和服务功能,包括用户的注册与登录、电影的分类与展示、电影信息的查询与推荐、座位的选择与预订、在线支付与电子票生成等。此外,随着在线视频平台的兴起,越来越多的人选择在线观看电影,这对传统电影院产生了巨大的冲击。研究意义: 开发在线电影院售票平台对于提升用户的观影体验、优化电影院的运营效率、促进电影产业的发展具有重要的意义。该系统旨在通过技术手段解决传统电影院售票中的问题,提供一个集成化的电影信息展示、座位选择、在线支付和用户评价平台,同时也为电影院和电影制作方提供有效的工具。
文章浏览阅读509次。保护我们剩下的人的通话信息安全,使用TOX可以让你在和家人,朋友,爱人交流时保护你的隐私不受政府无孔不入的的偷窥.关于TOX:其他牛逼的软件因为一些细化服务问你要钱的时候, TOX分文不取 . 你用了TOX, 想干嘛就干嘛.网友评论:项目源码展示:源码测试效果:最后,如果你学C/C++编程有什么不懂的,可以来问问我哦,或许我能够..._基于c++的即时聊天系统设计
文章浏览阅读584次。鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)当Java服务在Linux系统中运行时,可能会出现swap分区被占用的内存泄露问题,导致系统性能下降或者崩溃。下面是该问题的故障及解决方法、底层结构、架构图、工作原理、使用场景详解和实际应用方式、原理详细描述、相关命令使用示例以及文献材料链接。_linux swap占用很高
文章浏览阅读662次。Alt+F11,然后插入-模块:复制下面代码到编辑窗口:Sub 半角标点符号转换为全角标点符号()'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange..._替换半角宏
文章浏览阅读2.8k次。#.简介: WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。WebView内部的WebSetting对象负责管理WebView的参数配置; WebViewClient负责处理WebView的各种请求和通知事件,在对应事件发生时会执行WebViewClient的对应回调; ChromeWebviewClient辅助Webview处理与JS一些交互......_android webview真正加载完成
文章浏览阅读1.6k次。_bitcoin 调试环境搭建
文章浏览阅读4.3k次,点赞93次,收藏94次。为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷,引入B样条曲线(B-Spline)。本文介绍B样条曲线的基本概念:节点向量、支撑性、次数阶数、加权性质、节点生成算法等,为后续曲线计算打下基础。_样条曲线生成
文章浏览阅读902次。配置本地repo库下载我的阿里云盘文件文件放置#创建目录mkdir -p /opt/cloudera/parcel-repo/mkdir -p /opt/cloudera/cm/yum install createrepoCDH 6.2.0 的三个文件放到/opt/cloudera/parcel-repo/中,并且注意把sha256后缀的文件名修改为sha#执行createrepo命令生成rpm元数据 最终/opt/cloudera/parcel-repo/会多一个repodata目录_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line 76: /usr/java/jdk1.8.0_181
文章浏览阅读943次,点赞2次,收藏2次。uni.canvasToTempFilePath_uni.canvastotempfilepath
文章浏览阅读3.1k次。SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................_sdram 干扰
文章浏览阅读7.3k次。假设表格有A、B、C、D四列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3、col4。_excel数据怎么生成sql语句