导入glTF 3D模型后,(。glb文件)how do I save them for when I open the app again

2022
5
跳到解决方案
06-23-2021 02:57 PM
MichaelLev
通过
临时贡献者III

我正在为WAB(开发者版)2.20,Launchpad主题开发自定义小部件3 d场景(ArcGIS API for javascript4.20).

ESRI的例子”导入glTF 3D模型,说明如何导入3D glTF模型(。glb文件)into my WAB web application 3D scene, using the SketchViewModel.

我的问题-我如何保存这些3D模型与他们所有的更新属性(用户选择的位置和改变的大小和旋转),为下次当我打开我的web应用程序?

我想到了3种方法,但我不知道如何实施他们中的任何一个,我需要帮助-

1.是否有一种方法将它们添加到适当的现有功能层,当我再次打开应用程序时将读取?

2.另一种方式-我可以将原始的3D模型文件保存到Amazon S3云,但我如何从3D模型中“提取”属性(以知道大小和旋转),当用户再次打开web应用程序时,我如何“设置”模型属性为用户之前选择的值?

3.另一个选项-如何在用户设置了所有属性(大小,旋转,位置)后“选择”模型,将其“转换”为文件,并将该文件保存到Amazon S3云?通过这种方式,当用户通过模型“handles”设置了所有属性后,更新后的3D模型将被保存为一个包含所有更新属性的文件。

非常感谢您的帮助。

0荣誉
1解决方案

接受的解决方案
MichaelLev
通过
临时贡献者III

最后我成功了。

我很抱歉,我没有充分强调我们的web应用程序(由WAB AppBuilder Developer Edition 2.20开发)是由我们的客户使用的,所以他们没有选择在服务器中保存任何东西。

所以我解决了保存“*”的需求。glb”文件(3D模型文件,由其他工具生成,放入PC中的文件)它这样(我会解释原理)-

当读取每个glb时,它都连接到一个图形层(参见ESRI示例)导入glTF 3D模型所以我把所有这些图形层都分组在一个组层中。然后,当用户想要保存他所有的glb文件(也许他/她也按照他/她的意愿编辑了它们),我将组转换为JSON,并实现了2种保存JSON的方法-

1.首先,我将它保存到浏览器localStorage(然后它将仅供单人使用)

2.然后我“升级”并将其保存到亚马逊云,因此当打开这个web应用程序时,客户团队中的任何人都可以使用它。

当用户进入web应用程序时,我在亚马逊云中搜索相关文件夹,加载json文件(如果存在),然后从json转换,并在该组中创建相关的图形层。

在原帖子中查看解决方案

5回复
通过 匿名用户
不适用

@MichaelLev

有两种方法保存在Web应用中看到的3D。

1.您可以从ArcGIS Pro发布服务到您的门户(企业门户或ArcGIS Online),然后将此int添加到您的Web应用程序或创建一个3D场景Web应用程序表单(Web应用程序Builder是一个简单的我们bap,您可以使用)发布托管场景层- ArcGIS门户|文档

2.如果你没有ArcGSI Pro,或者如果场景层处于你满意的状态(从你分享的链接来看,它看起来不错),你可以将该层直接添加到你的门户内容中作为场景层,(你不能直接添加到门户中的场景视图中)一旦你有场景存储在你的内容中,你可以将它添加到场景中。为场景添加层- ArcGIS门户| ArcGIS企业文档

从那里你可以保存场景,并把它变成一个Web应用程序。

创建应用程序从场景门户的ArcGIS |文档的ArcGIS企业

希望这能有所帮助

0荣誉
MichaelLev
通过
临时贡献者III

亲爱的匿名用户,

你的建议涉及桌面应用程序,所以它们是无关紧要的。我需要做的一切从web应用程序。web应用程序连接到一个现有的场景。我拯救不了一个新的场景。

我更新了我的问题,提出了一些方法。只是我不知道如何实施解决方案。请再读一遍。谢谢你!

0荣誉
MichaelLev
通过
临时贡献者III

亲爱的@RobertScheitlin__GISP

恐怕我的问题,虽然很短,但它需要一个专家…你能帮忙吗?

0荣誉
RalucaNicola1
通过 Esri贡献者
Esri贡献者

Michael你好,很抱歉回复晚了。你可以使用带有大小/旋转属性和ObjectSymbol3DLayer符号的点特征层。根据我对您的理解,编辑是您正在寻找的用于持久化大小/旋转/位置值的功能。看看我们的编辑样本,这是你所需要的,据我所知:https://developers.arcgis.com/javascript/latest/sample-code/widgets-editor-3d/您需要将gltf存储在服务器上的某个地方,以便能够将它们用作符号。

如果您有更多问题,请告诉我们。

0荣誉
MichaelLev
通过
临时贡献者III

最后我成功了。

我很抱歉,我没有充分强调我们的web应用程序(由WAB AppBuilder Developer Edition 2.20开发)是由我们的客户使用的,所以他们没有选择在服务器中保存任何东西。

所以我解决了保存“*”的需求。glb”文件(3D模型文件,由其他工具生成,放入PC中的文件)它这样(我会解释原理)-

当读取每个glb时,它都连接到一个图形层(参见ESRI示例)导入glTF 3D模型所以我把所有这些图形层都分组在一个组层中。然后,当用户想要保存他所有的glb文件(也许他/她也按照他/她的意愿编辑了它们),我将组转换为JSON,并实现了2种保存JSON的方法-

1.首先,我将它保存到浏览器localStorage(然后它将仅供单人使用)

2.然后我“升级”并将其保存到亚马逊云,因此当打开这个web应用程序时,客户团队中的任何人都可以使用它。

当用户进入web应用程序时,我在亚马逊云中搜索相关文件夹,加载json文件(如果存在),然后从json转换,并在该组中创建相关的图形层。