glTF™ 是一种免版税规范,用于通过引擎和应用程序高效传输和加载 3D 场景和模型。glTF 最小化 3D 资产的大小,以及解包和使用它们所需的运行时处理。glTF 定义了一种可扩展的发布格式,通过在整个行业中实现 3D 内容的互操作使用来简化创作工作流程和交互式服务。
详情请见作者的另一篇文章:
【GIS开发】glTF和b3dm文件格式读取(C++,Python)
https://graphics.pixar.com/usd/release/spec_usdz.html
“在WWDC 2018大会上,苹果宣布正在与皮克斯合作,为AR创作提供一个叫做“USDZ”(Universal Scene Description)的新文件格式。并且,Adobe、Autodesk、Sketchfab、Pixar、PTC、Quixel等众多应用程序都将支持此格式。”
USDZ基于皮克斯的USD工具。简单来说, USDZ就是将多个USD源文件和渲染对象所需的其它资源不压缩、不加密地合并成一个更大的ZIP文件,一个USDZ文件就相当于是一个完整的3D模型了。 而且USDZ是未压缩、不加密的文件,它也允许从外部引用内部的单个文件,或是在给定的USDZ文件当中嵌套其它文件。
https://pypi.org/project/trimesh/
Trimesh 是一个纯 Python (2.7-3.4+) 库,用于加载和使用三角形网格。 该库的目标是提供一个功能齐全且经过良好测试的 Trimesh 对象,该对象允许以 Shapely 库中的 Polygon 对象的样式轻松操作和分析。
安装python的第三方库:
pip install numpy
pip install trimesh
执行如下代码,通过trimesh库加载gltf模型:
import numpy as np
import trimesh
trimesh.util.attach_to_log()
mesh = trimesh.load('D:\\test_astronomy\\Earth_1_12756.glb', force='mesh')
v = mesh.vertices
f = mesh.faces
print(f)
#这样得到的v,f格式是trimesh 内置的格式,不能直接用于其它计算,需要转换为numpy
v = np.array(v)
f = np.array(f)
print(f)
mesh.bounding_box_oriented.primitive.extents
mesh.bounding_box_oriented.primitive.transform
print(mesh.bounding_box_oriented.volume,
mesh.bounding_cylinder.volume,
mesh.bounding_sphere.volume)
mesh.show(background=[1,0,0,1])
这里继续安装python第三方库pyrender,增强trimesh的功能。
pip install pyrender
加载和显示地球等行星的代码例子如下:
from pyrender import Mesh, Scene, Viewer
from io import BytesIO
import numpy as np
import trimesh
import requests
# duck_source = "https://github.com/KhronosGroup/glTF-Sample-Models/raw/master/2.0/Duck/glTF-Binary/Duck.glb"
# duck_source = "D:/test_astronomy/Mars_1_6792.glb"
# duck_source = "D:/test_astronomy/Jupiter_1_142984.glb"
# duck_source = "D:/test_astronomy/Mercury_1_4878.glb"
# duck_source = "D:/test_astronomy/Neptune_1_49528.glb"
# duck_source = "D:/test_astronomy/Uranus_1_51118.glb"
# duck_source = "D:/test_astronomy/Venus_1_12103.glb"
duck_source = "D:/test_astronomy/Earth_1_12756.glb"
# duck = trimesh.load(BytesIO(requests.get(duck_source).content), file_type='glb')
duck = trimesh.load(duck_source, file_type='glb')
duckmesh = Mesh.from_trimesh(list(duck.geometry.values())[0])
scene = Scene(ambient_light=np.array([1.0, 1.0, 1.0, 1.0]), bg_color=[1,0,0,1])
scene.add(duckmesh)
Viewer(scene)
https://github.com/google/model-viewer
在我们的银河系中,行星比恒星还多。目前围绕我们的恒星运行的八颗行星。内部的岩石行星是水星、金星、地球和火星。外行星是气态巨行星木星和土星以及冰巨星天王星和海王星。
国际天文学联合会于 2006 年采用了行星的最新定义。它说行星必须做三件事:
体积:(以地球为1)木星 :土星 :天王星 :海王星 :地球 :金星 :火星 :水星 = 1330 :745 :65 :60 :1 :0.86 :0.15 :0.056
质量:(以地球为1)木星 :土星 :天王星 :海王星 :地球 :金星 :火星 :水星 =318 :95 :14.53 :17.15 :1 :0.8 :0.11 :0.0553
离太阳从近到远的顺序:水星、金星、地球、火星、木星、土星、天王星、海王星。
作为我们太阳系中最小且离太阳最近的行星,水星仅比地球的月球大一点。
从水星表面看,太阳的大小是地球的三倍多,而阳光的亮度是地球的七倍。尽管水星靠近太阳,但它并不是我们太阳系中最热的行星——这个称号属于附近的金星,这要归功于它稠密的大气层。
由于水星的椭圆形(蛋形)轨道和缓慢的自转,太阳似乎会短暂地从行星表面的某些部分升起、落下并再次升起。同样的事情在日落时反过来发生。
金星是太阳的第二颗行星,是地球最近的行星邻居。它是四个内部的类地(或岩石)行星之一,通常被称为地球的双胞胎,因为它的大小和密度相似。然而,这些不是同卵双胞胎——两个世界之间存在根本差异。
金星有一层厚厚的有毒大气,充满了二氧化碳,它永远被厚厚的黄色硫酸云所笼罩,这些硫酸云会吸收热量,造成失控的温室效应。它是我们太阳系中最热的行星,尽管水星离太阳更近。金星的表面温度约为 900 华氏度(475 摄氏度)——热得足以熔化铅。表面呈锈色,上面布满了剧烈嘎吱作响的山脉和数千座大型火山。科学家们认为一些火山可能仍然活跃。
地球只是太阳系中的第五大行星,但它是太阳系中唯一一个表面有液态水的世界。地球仅比附近的金星大一点,是距离太阳最近的四颗行星中最大的一颗,所有这些行星都是由岩石和金属制成的。
地球这个名字至少有 1000 年的历史。除地球外,所有行星均以希腊和罗马诸神命名。然而,地球这个名字是一个日耳曼语单词,意思是“地面”。
地球的卫星:月亮
火星是来自太阳的第四颗行星——一个尘土飞扬、寒冷的沙漠世界,大气层非常稀薄。火星也是一个充满活力的行星,有四季、极地冰盖、峡谷、死火山,并且有证据表明它在过去更加活跃。
木星是太阳系中最大的行星,它是太阳系中最大的行星——质量是所有其他行星总和的两倍多。
木星是我们太阳系中最大的行星。它类似于一颗恒星,但它从来没有大到足以开始燃烧。
木星上覆盖着旋转的云纹。它有像大红斑这样的大风暴,已经持续了数百年。
木星是一个气态巨行星,没有固体表面,但它可能有一个与地球大小相当的固体内核。木星也有光环,但它们太微弱,看不清楚。
土星是来自太阳的第六颗行星,也是我们太阳系中的第二大行星。
土星装饰着成千上万个美丽的小环,在行星中是独一无二的。它不是唯一有环的行星——由大块冰和岩石组成——但没有一个行星像土星的那样壮观或复杂。
与同为气态巨行星的木星一样,土星是一个主要由氢和氦组成的巨大球体。
天王星是来自太阳的第七颗行星,在我们的太阳系中具有第三大直径。它是第一颗借助望远镜发现的行星,天文学家威廉·赫歇尔于 1781 年发现了天王星,尽管他最初认为它不是彗星就是恒星。
两年后,该物体被普遍接受为一颗新行星,部分原因是天文学家约翰·埃勒特·博德的观察。赫歇尔试图以乔治三世国王的名字命名他的发现Georgium Sidus,但没有成功。相反,科学界接受了博德的建议,将其命名为希腊天王星,正如博德所建议的那样。
黑暗、寒冷、受超音速风的鞭打,冰巨海王星是我们太阳系中第八颗也是最遥远的行星。
海王星与太阳的距离是地球的 30 多倍,是太阳系中唯一一颗肉眼不可见的行星,也是发现之前数学预测的第一颗行星。2011 年,海王星完成了自 1846 年发现以来第一个 165 年的轨道。
美国宇航局的航海者 2 号是唯一近距离访问海王星的航天器。它于 1989 年飞出太阳系时飞过。
冥王星是柯伊伯带中的一颗矮行星,柯伊伯带是海王星轨道之外的一个甜甜圈形状的冰体区域。在我们太阳系的这个遥远区域,可能有数百万个这样的冰天体,统称为柯伊伯带天体 (KBO) 或跨海王星天体 (TNO)。
冥王星——比地球的月球还小——有一个心形的冰川,相当于德克萨斯州和俄克拉荷马州的大小。这个迷人的世界拥有蔚蓝的天空、旋转的月亮、与落基山脉一样高的山脉,而且下雪——但雪是红色的。
当冥王星在 2006 年从行星重新分类为矮行星时,代表被降级的行星引起了广泛的愤怒。随着教科书的更新,互联网催生了冥王星经历一系列情绪的模因,从愤怒到孤独。但自从新视野号图像的发布显示出表面上非常突出的心形特征,悲伤的冥王星模因已经让位于一个非常满足、充满爱的冥王星,它希望再次被航天器访问。
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进。o_O???
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!