问题标签 [sceneview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3906 浏览

swift - 如何使 scnView 小于屏幕尺寸?

视图控制器

0 投票
1 回答
1275 浏览

ios - SceneKit:无论您在哪里触摸屏,unprojectPoint都会返回相同/相似的点

下面的代码应该将触摸坐标转换为 SceneKit 场景的世界坐标。

但是,如下面的输出所示,unprojectPoint无论您触摸屏幕的哪个位置(iPhone 5s),返回的点实际上都会返回相同的点。

类文档unprojectPoint建议使用 0 到 1 之间的 Z 值,但使用 0.5 等不同的值不会改变unprojectPoint.

这篇 SO 帖子讨论了如何设置 的深度值unprojectPoint,但将 Z 值设置为大于 1 的值(例如 15、20)也不会改变输出。

在这两种情况下,从unprojectPoint有效返回的 X 和 Y 值也保持不变。

1)什么是正确的使用方法unprojectPoint

2)如何unprojectPoint解释相机旋转?例如,如果您将相机移动到 (0, 20, 0) 并将相机向下旋转 90 度使其面向地面,您如何确保旋转被考虑在内?如果您将深度设置为 20 并点击原点,则所需的返回值unprojectPoint应该是 (0, 0, 0)。

3)如何unprojectPoint在摄像头前返回值(例如,Z 值低于摄像头的 Z 值)

代码:

输出:

二维点:(154.5, 169.5)。3D点:SCNVector3(x:-0.00111810782,y:0.0232769605,z:7.9000001)

二维点:(280.5, 252.0)。3D点:SCNVector3(x:0.0244967155,y:0.00650534919,z:7.9000001)

二维点:(32.0, 181.0)。3D点:SCNVector3(x:-0.0260214079,y:0.0209390987,z:7.9000001)

二维点:(12.0, 505.0)。3D点:SCNVector3(x:-0.0300872531,y:-0.0449275821,z:7.9000001)

二维点:(311.5, 12.5)。3D点:SCNVector3(x:0.0307987742,y:0.0551938377,z:7.9000001)

二维点:(22.5, 88.0)。3D点:SCNVector3(x:-0.0279526841,y:0.0398452766,z:7.9000001)

二维点:(313.5, 358.0)。3D点:SCNVector3(x:0.0312053617,y:-0.0150436237,z:7.9000001)

二维点:(314.0, 507.0)。3D点:SCNVector3(x:0.0313070044,y:-0.0453341678,z:7.9000001)

二维点:(155.0, 360.5)。3D点:SCNVector3(x:-0.00101646129,y:-0.0155518558,z:7.9000001)

0 投票
0 回答
1073 浏览

ios - SceneKit:提高 SceneView 的 hitTest 功能的性能?

我们的场景只有大约 20 个节点。下面的代码让用户平移,对每个平移进行命中测试——目标是在用户平移屏幕时突出显示块。

但是,它在 iPhone 5S 上明显迟缓。这不是确定性的,但经常发生足以令人恼火(每 5-10 个平底锅)。

我们考虑使用hitTestWithSegment,因为您可以严格限制测试范围,但认为应该更慢,因为您必须首先计算函数所需的两个点。

此外,该SCNHitTestClipToZRangeKey选项hitTest应该通过收紧命中范围来提供相当的性能提升,而无需计算两个额外的点。

对加快性能有什么建议hitTest吗?

0 投票
0 回答
57 浏览

swift - SKVideoNode 无法在 Iphone 5 上播放 360 度视频

我正在开发 360 度视频播放器。我已经完成了这个抛出 SKVideoNode。它在所有其他设备上都可以正常工作,但不能在 iphone 5 上工作。并且在播放视频时显示黑屏,但我们可以听到音频。所以请建议我如何解决这个问题。

提前致谢。

0 投票
1 回答
73 浏览

angular - esri地面世界海拔不工作

我正在尝试在 Angular 2 中实现一个应用程序,其中一个模块专门用于满足地图可视化的所有需求。我希望能够在 MapView 和 SceneView 之间切换(以获得具有地面高程的 3D 视图)。除了地面海拔,我能够让一切正常工作。我不知道这是否是其他东西的角度 2 的问题,但是当我用旧版本 (4.0) 替换当前 API (4.1) 时,会显示地面高程,但是文档中的所有示例都使用 4.1 所以它一定是我的问题。有人遇到同样的问题吗?

Systemjs.config.js

0 投票
1 回答
881 浏览

ios - 在 SCNView 上启用用户交互后,如何使其仅水平旋转?

我是 SceneKit 的新手,我正在尝试将 dae 文件加载到 SCNScene,将此 SCNScene 设置为 SCNView,启用用户交互,然后我可以通过手势旋转 3D 模型。到目前为止一切顺利,当我滑动或放大/缩小时,3D 模型按应有的方式工作。但是,我真正需要的是,当手势(向右或向左滑动)发生时,3D 模型仅水平旋转,没有放大/缩小,我该怎么做才能让它发生?这是我的代码:

谢谢你的帮助!

0 投票
2 回答
1180 浏览

scenekit - SceneKit:如何从图像为 SCNFloor 创建棋盘图案?

目标是创建一个无限的棋盘图案。

使用 SCNFloor 和附加的图像,我们产生了一些接近但不太像棋盘的东西。一些黑色方块在不应该合并的地方合并。

Scale我们为、WrapSWrapTMin filterMap filter和尝试了不同的值Mip filter。屏幕截图显示了当前值。

底层图像是否不正确,或者我们需要为 SCNFloor 更改什么设置?

重复图像:

在此处输入图像描述

结果:

在此处输入图像描述

0 投票
0 回答
66 浏览

java - ArcGIS 相机动画

我开始学习 ArcGIS API for Java (Runtime 100)。我需要做 SceneView() 相机的动画。根据 API 文档,Camera 可以有诸如 roll 和 pitch 之类的参数。但实际上,我可以只旋转相机的俯仰角。当我设置滚动时,什么也没发生。现在我使用非常糟糕的解决方案:我为 JavaFx 场景添加缩放和旋转变换并旋转场景。这很糟糕,因为在旋转 25-70 度时,我看到灰色背景。我该如何解决这个问题?

0 投票
1 回答
239 浏览

c# - 棱镜和 Esri GetElevationAsync(mapPoint)

我们正在使用 wpf、C# 和 Prism v6.1.0.0 使用 Visual Studios 2017 构建一个应用程序。我们有一个 3d 视图,它是一个 Esri .net 运行时 SceneView。我们想使用 GetElevationAsync(mapPoint) 函数从 DTED 0 级数据中获取高程数据。在仅使用 Esri SceneView 的独立应用程序中,如果 SceneView 处于活动状态,GetElevationAsync(mapPoint) 函数适用于 SceneView 和 MapView。这也是使用 FileElevationSource 并将 DTED 级别 0 加载到 FileElevationSource 中,然后将其添加到 SceneView.Scene.Surface。

我们遇到的问题是,当我们尝试调用 GetElevationAsync(mapPoint) 时,我们会收到 System.AccessViolationException。有没有其他人尝试使用 ESRi 的 .net 运行时和 Prism 来创建使用 GetElevationAsync(mapPoint) 函数的 SceneView 应用程序?

拥有的是具有多个视图和主外壳的 Prism 应用程序。SceneView 模块有一项服务,并且正在使用该服务器将 DTED 级别 0 数据加载到 SceneView.Scene.Surface。我已将所有功能移到 SceneViewView 中,但我们仍然遇到相同的访问错误。调用线程是主应用程序线程。我已经发布了错误和一些代码片段。我在 Prism 应用程序中使用的代码与我在使用所有相同控件但不是 Prism 架构的简单 WPF 应用程序中使用的代码相同。它工作得很好,我可以通过激活 Sceneview 并将 Mapview 中的一个映射点传递给 GetElevationAsync 函数来获取高程数据,没有任何问题。

正在传递的地图点数据“mapPoint = {MapPoint[X=4.54778361440582, Y=27.7940801510867, Z=5.58793544769287E-09, Wkid=4326]}”</p>

System.AccessViolationException 发生 HResult=0x80004003 消息=尝试读取或写入受保护的内存。这通常表明其他内存已损坏。Source=Esri.ArcGISRuntime StackTrace:在运行时CoreNet.CoreLocalElevationRaster.LocalElevationLayerPickElevation(IntPtr pNativeElevationLayer, Double x, Double y, Double& z) at Esri.ArcGISRuntime.Controls.FileElevationSource.GetElevationAsync(MapPoint point) at SceneViewModule.Views.SceneViewView.SceneViewView.d__19 .MoveNext() 在 \SceneViewModule\Views\SceneViewView\SceneViewView.xaml.cs:line 141

0 投票
1 回答
220 浏览

ios - 存在 Web 视图控制器时,Sceneview 冻结

当单击 an 时,我Safari Services kit用来呈现 Web 视图SCNode。但是,当我从 VC 回到safariVC我的 VC 时sceneViewsceneView即使我通过重新运行会话来重新启动会话,它也会被冻结。

我在这个网站上读到,展示另一个 VC 会杀死场景视图线程,我只想确认一下。基本上我想知道是否有可能展示另一个 VC 并能够回到sceneView并“恢复”scenView

笔记:

  • VC = 视图控制器

代码

我如何展示我的 safari web VC

我如何重新启动会话