1.(五) Geometries
2.俄罗斯三维几何内核:C3D TOOLKIT 介绍
3.opencascade环境配置教程|vs2019
4.3D模型格式全解|含RVT、源码3DS、源码DWG、源码FBX、源码IFC、源码OSGB、源码主动资金源码OBJ等70余种
5.ArchiCAD二开入门
(五) Geometries
本文主要介绍以下内容:
专栏代码地址: github.com/ue/three....
本文代码地址: github.com/ue/three....
在three.js概念里,源码mesh是源码由几何体Geometry和材质Material组成的,在源码Mesh.js可以看到之间的源码关系:
Mesh = Geometry + Material
为什么会有Mesh三角网的概念呢?
首先我们要回顾下图形渲染管线了。
所以,源码从上图可以理解:
Geometry: 就是源码在准备顶点数据,对应Vertex处理过程; Mesh: 就是源码对应的Triangle三角面处理过程; Material:对应Fragment片元处理过程,对每个三角面片进行着色、源码贴图等等处理;
几何体,源码就是源码在准备一堆顶点数据,主要包括顶点数据、颜色数据、UV贴图数据、法向量数据等等;简单的说,几何体就是数据源,如果你对如何通过三角面片拼接成几何体非常了解,完全可以自己组织数据,不幸的是,这样操作不仅麻烦,而且也是非常困难的事情。所以,three.js内置常用的几何体,供大家直接使用,然后控制Position、Scale、Rotation、visible等空间属性,来操控物体。
Three.js一共有 种内置的图元。
简单整个例子,了解下使用流程,其他几何体触类旁通,参考three.js官网即可。
参考代码:
执行命令:
运行后,场景中多一个Line。
运行后,多出一个三角锥:
为什么即存在Geometry,又存在BufferGeometry?Apachedbutils源码
说白了,Geometry更适合于人来理解,自定义的地方比较多,但性能比较低一些;
BufferGeometry更适合计算机来理解,自定义的地方很少,适合对图形学非常了解的人使用,但是性能很高。
内置的几何体,都是一些非常基础的模型,可以使用这些基础模型组装成,搭积木的方式,组成非常复杂的场景。
目前国内,数字产业化搞得如火如荼,各个行业都要数字化,所以数据的来源也是非常复杂的,多种多样的,比如:BIM行业的Revit数据模型、CAD图纸,GIS行业的各种数据要素、倾斜摄影、tiles,可以参考CesiumLab的数据转换这张图。
最终都会将各行各业的数据进行转换,轻量化,瓦片化等等技术手段,传输给Three.js的BufferGeometry,进行渲染;
或者将数据通过Datasmith的插件,转换数据转换成Unreal Engine的资产进行渲染。
后期会针对熟悉的行业数据进行一一分析,探讨应用场景。
图形学分为三大部分,几何、渲染、动画。
俄罗斯三维几何内核:C3D TOOLKIT 介绍
C3D工具包,作为构建几何模型、执行几何计算及在几何模型元素间创建连接的核心,支持第三方应用中几何模型的处理,将其几何图形导出至其他三维系统。在计算机辅助设计(CAD)、计算机辅助制造(CAM)、工程(CAE)及建筑信息建模(BIM)中,wcsncpy源码C3D工具包提供关键功能,描述几何对象的形状,维护模型元素间关系,记录模型构建历史,向几何模型元素添加属性。
该工具包集成CAD/CAM/CAE/BIM及类似三维软件开发的五个关键组件,包含动态链接库、完整源代码演示应用程序、技术文档及其他支持文件,与多种集成开发环境(IDE)兼容。
C3D工具包的主要特点与优势包括:提供全面集成解决方案,集几何建模内核、约束求解器、可视化引擎、多边形网格到B-rep转换器及数据交换模块于一体;提供完整API,独立实现新功能更新,避免产品版本间的不兼容;采用现代多线程架构,高效并行计算,确保对象线程安全;跨平台运行,支持Android、FreeBSD、iOS、MacOS X、Linux及Windows;提供灵活许可证管理,考虑客户商业模式,加速收入确认;直接从开发人员获取技术支持,无需通过多层服务台。
opencascade环境配置教程|vs
配置环境
对OpenCASCADE的配置教程,旨在帮助用户快速上手,解决配置过程中的常见问题。本文将详细覆盖获取源代码、编译、链接操作,以及处理环境配置时可能遇到的常见问题。欢迎提出疑问,共同探讨。
### 什么是OpenCASCADE?
OpenCASCADE是一个专为几何计算设计的C++库,提供Python和C++两种使用方式。它广泛应用于CAD领域,支持建模、计算以及文件输入输出,常见格式为.BRep。vueloader源码与CGAL相比,虽然都是几何计算库,但应用领域不同,OpenCASCADE在CAD行业中的知名度更高。
### OpenCASCADE类的继承关系
OpenCASCADE的头文件结构复杂,主要分为三类:GP、Geom、TopoDS。GP类包含基本单位,如point和vector;Geom类提供几何构型;TopoDS类用于复杂几何构型。GP类通过GC方法与Geom类交互,Geom类与TopoDS类通过BRepBuilderAPI实现转换。TopoShape类是形状的基类,其子类包括vertex、Edge、Wire、mesh、Solid等。
### 下载源代码
从官方网站下载OpenCASCADE源代码,推荐选择源码版本,并确保下载第三方库时选择x位。具体操作指南可参考相关文档。
### Visual Studio环境配置
配置Visual Studio环境,解决编译和链接问题。编译将源代码转换为obj文件,而链接则将多个obj文件与库文件合并生成可执行文件。lib文件包含目标代码,dll文件包含函数实现,pdb文件用于调试。
#### 编译和链接
编译阶段处理源代码语法、引用头文件的错误;链接阶段关注库文件的设置,确保正确路径和版本匹配。
#### lib、dll、pdb文件关系
lib文件包含静态库代码,链接时直接并入;dll文件为动态库,包含函数实现;pdb文件用于调试时显示源代码信息。
#### 编译错误和链接错误
编译错误主要在语法、头文件引用上;链接错误涉及库文件缺失、版本不匹配等问题。解决方法包括配置依赖库路径、添加lib和dll文件路径。discuz!源码
### 链接错误解决步骤
配置依赖库路径、添加准确的lib库文件、在调试器工作环境添加dll和pdb文件路径。使用Far Manager工具查找未识别的符号,通过十六进制函数名手动在Visual Studio中添加库名。
### 个人简介
本文作者为深圳在读研究生,研究方向为BIM/CIM,旨在分享配置OpenCASCADE的学习过程及问题记录。
### 参考链接
提供详细的操作指南和文档链接,以便用户深入学习和实践。
3D模型格式全解|含RVT、3DS、DWG、FBX、IFC、OSGB、OBJ等余种
本文整理自老子云平台公众号。老子云平台提供全行业+三维模型格式展示、转格式、轻量化服务。本文将对已开放的3D模型格式进行统一梳理说明。
以下是按照字母顺序排列的三维格式描述:
3dm:Rhino 3D Model文件,由Rhinoceros开发,用于保存二维和三维图形。
3ds:3D Studio场景文件,由Autodesk开发,用于3D建模、动画和渲染。
3dxml:Dassault Systemes的3D XML文件格式,由Dassault Systèmes开发,包含丰富的3D图像模型信息。
amrt:老子云自研的国产3D格式,由老子云开发,特点为存储体量小、加载速度快,支持多种三维格式转换为统一标准格式。
arc:Norton Backup Archive文件,由Symantec Corporation开发,可用CAD软件打开。
asm:Assembly Language Source Code File,由Microsoft Corporation开发,用于低级语言源代码。
catpart:CATIA V5 Part File,由Dassault Systèmes开发,用于3D部分文件存储。
catproduct:CATIA V5 Assembly File,由Dassault Systèmes开发,用于组件制造过程的3D装配文件。
cgr:CATIA Graphical Representation File,由Dassault Systèmes开发,用于CAD文件的可视化存储。
dae:Digital Asset Exchange File,由Sony开发,用于交互式3D应用程序的协作设计活动。
dlv:CATIA 4 Export File,由Dassault Systèmes开发,用于设计数据导出。
dwf:Autodesk Design Web Format File,由Autodesk开发,用于2D/3D图形文件格式,旨在丰富设计数据。
dwg:AutoCAD Drawing Database File,由Autodesk开发,用于AutoCAD中的二维或三维图数据库。
dxf:Drawing Exchange Format,由Autodesk开发,用于CAD矢量图像文件。
exp:CATIA 4 Export File,由Dassault Systèmes开发,用于设计数据导出。
fbx:ArcView Spatial Index File For Read-Only Datasets,由ESRI和Kaydara(Autodesk)开发,用于**界和视频游戏开发的流行专有文件格式。
glb:STK Globe File,由Analytical Graphics开发,与STK程序相关,用于3D模型的建模和任务。
gltf:GL Transmission Format File,由Trimble Inc.开发,用于3D数据保存在glTF(三维)模型文件。
iam:Inventor Assembly File,由Autodesk开发,用于3D CAD装配文件。
ifc:Industry Foundation Classes File,由buildingSMART开发,用于3D图形、CAD-CAM-CAE文件的开放文件格式。
ifczip:Industry Foundation Classes (zipped),由buildingSMART开发,IFC文件的压缩版本。
iges:IGES Exchange Format,由Redway3d和其他开发者开发,用于国际标准的3D线框模型交换。
igs:Initial Graphics Exchange Specification Drawing File,由美国空军开发,基于IGES的图形文件格式,用于保存2D和3D图形。
ipt:Inventor Part File,由Autodesk开发,用于Autodesk Inventor软件中的零件或物体。
jt:JT Open CAD File,由Siemens PLM Software开发,用于数据共享、产品协作和可视化的开放高性能存储格式。
mfl:ModFit LT Analysis Report File,由Verity Software House开发,用于MODFIT LT程序分析的DNA模式。
model:Dassault Systèmes开发的CATIA软件的3D建模格式。
neu:Pro/ENGINEER Neutral File,由Parametric Technology Corporation开发,用于Pro / ENGINEER程序创建的CAD文件。
obj:Wavefront 3D Object File,由Wavefront Technologies开发,用于通用的3D图像文件格式。
osgb:Open Scene Gragh Binary,由OpenSceneGraph开发,用于地图缓存文件和实景三维倾斜摄影模型。
par:Solid Edge Part File,由Siemens PLM Software开发,用于Solid Edge三维建模软件的文件。
pkg:Midtown Madness 3D Model,由Rockstar Games开发,用于游戏的3D模型和图形数据。
prc:Product Representation Compact File,由Adobe Systems Incorporated开发,用于表示三维模型和装配结构。
prt:Pro/ENGINEER Part File,由PTC开发,用于Pro / ENGINEER CAD程序的文件。
psm:Solid Edge Document Format,由Siemens PLM Software开发,用于Solid Edge创建的3D零件。
pts:PointCloud 3D File,由Exelis Inc.开发,用于点云三维数据。
ptx:PageMaker Template File,由Adobe Systems Incorporated开发,用于PageMaker的7.0模板。
pwd:Solid Edge Weldment Document,由Siemens PLM Software开发,用于三维CAD制造程序Solid Edge的CAD文件。
rvt:Revit Project File,由Autodesk开发,用于建筑信息模型(BIM)软件。
sab:ACIS SAB Model File,由Spatial Corp开发,用于ACIS建模软件的三维模型。
sat:ACIS SAT 3D Model File,与空间3D ACIS建模软件相关的CAD文件类型。
session:CATIA 4 Session File,由Dassault Systèmes开发,用于CATIA软件的会话文件。
sldasm:SolidWorks Assembly File,由Dassault Systèmes开发,用于SolidWorks 3D CAD软件的装配文件。
sldprt:SolidWorks CAD Part File,由Dassault Systèmes开发,用于SolidWorks的关联文件。
step:STEP 3D Model,用于3D模型文件的ISO格式,由未知开发者开发。
stl:Stereolithography File,用于保存标准形式的CAD文件,由3D Systems开发。
stp:STEP 3D CAD File,用于表示和工业产品数据交换的ISO标准,由未知开发者开发。
stpz:压缩的STEP文件。
u3d:Universal 3D File,由Universal 3D File开发的通用3D文件格式。
unv:I-DEAS Data File,由Siemens AG开发,用于Windows和Unix操作系统的数据保存。
vda:Targa Bitmap Image File,由Microsoft Corporation开发的Raster光栅图像文件。
vrml:Virtual Reality Modeling Language 3D World,由开源开发者开发的虚拟现实建模语言相关的3D世界文件。
wrl:VRML World,由未知开发者开发的虚拟现实建模语言创造的虚拟世界文件。
x_b:Parasolid Model (binary),由Siemens PLM Software开发的Parasolid 3D CAD应用程序。
x_t:Siemens PLM Software开发的与Parasolid软件相关的文件,用于存储几何形状、拓扑和彩色三维模型数据。
xas:PTC Pro/Engineer Assembly File,由Parametric Technology Corporation开发的用于Microsoft Windows平台的3D设计解决方案。
xmt:Binary Data,用于ug软件的三维格式。
xmt_bin:Parasolid 3D图像文件。
xmt_txt:Parasolid CAD Format,包含存储在简单的ASCII文本格式的文件。
xpr:Pro/ENGINEER Part Instance Accelerator File,由Parametric Technology Corporation开发的用于加速3D产品设计应用中零件加载的文件。
xyz:Cartesian Chemical Modeller Input,由Hypercube, Inc.开发的化学分子建模软件的文件扩展名。
以上格式的PDF文档可以免费在老子云平台公众号后台留言获取。
ArchiCAD二开入门
探索BIM世界中的ArchiCAD:入门指南 在BIM技术的大海中,Rhino和SketchUp以其直观易用赢得了初学者的青睐,Revit紧随其后,而ArchiCAD以其复杂性显得与众不同。Revit生态系统以其丰富的资源和广泛的接纳度占据首位,SketchUp和Rhino则稍逊一筹,ArchiCAD的生态系统则相对较弱,尤其在方案设计公司,SketchUp更为常见,部分机构则在探索ArchiCAD的独特功能。 开发权限与入门门槛 想要进入ArchiCAD的二次开发世界,你需要首先注册开发者权限,申请Developer id和Local Id。这个过程可能略显繁琐,但这也反映出ArchiCAD作为小众软件的特性。 开发环境搭建 从官网下载官方SDK,并确保与你的ArchiCAD版本匹配。推荐使用Visual Studio 作为开发环境。在开始创建Addon项目时,遵循以下步骤:VS项目设置: 选用SDK提供的模板,创建新项目,并整理文件结构,Libraries存放库,Resources包含资源,Src存放源代码,确保引用顺序的合理性。
头文件管理: 在引用API时,确保先引入"APIEnvir.h",以避免编译过程中的常见问题。
代码挑战与调试 在编写插件代码时,比如在"MenuCommandHandler"中创建交互功能,尝试创建MessageBox进行测试。调试过程中,可以使用"Add-On Manager"或Visual Studio附加到ArchiCAD进程。如果在Demo模式下工作,可能需要修改MDID并遵循特定的调试步骤。 在Visual Studio中,务必指定ArchiCAD的安装路径,并在Command Arguments中添加"-DEMO"标志。对于Native代码的调试,你需要选择"Native"类型,并在"Debug -> Attach to process"中连接到运行中的进程。 总结与启示 尽管ArchiCAD的二次开发道路充满挑战,但掌握这些基础知识后,你将能够深入挖掘其潜力,为建筑设计带来独特解决方案。每一步都需要耐心和细心,但每一次代码的运行,都是你迈向ArchiCAD二开世界的重要一步。