public class Scene
extends com.supermap.data.InternalHandleDisposable
SuperMap iObjects Java 三维场景的主体是一个模拟地球的三维球体(SuperMap Objects Java 以半径为6378137 米的球体来模拟地球),该球体具有地理参考,球体上的点采用经纬度进行定位,并且可以通过三维场景提供的球体上的经纬网格,方便地浏览;同时,使用全球的遥感影像图作为背景覆盖在球体表面,增强三维球体模拟的逼真性;除此之外,三维场景还模拟了地球所处的环境,包括:宇宙的星空,地球的大气环境,地球表面的雾环境等。三维场景还提供了相机的设置,相机可以用来控制对球体的观测角度、方位和观测范围,从而以不同的视角呈现球体的不同部位。
各种三维数据将通过三维场景填加到三维场景的基本组织架构上,即三维数据会依据地理参考信息,填加到SuperMap Objects Java 提供的球体上。
能够添加到三维场景中的数据包括:二维矢量数据集、三维几何对象、影像数据、地形数据、第三方三维模型数据以及KML文件。
新建三维窗口中的默认存在的三维场景
public void TestScene(DatasetVector targetDataset, Scene sceneObject) { // 进行三维场景的设置 sceneObject.getAtmosphere().setVisible(true); Camera camera = new Camera(102, 31, 10000,AltitudeMode.RELATIVE_TO_GROUND, 0, 0); sceneObject.setCamera(camera); Fog fog = new Fog(); fog.setFogMode(FogMode.LINEAR); fog.setEnable(true); sceneObject.setFog(fog); sceneObject.setScaleLegendVisible(true); sceneObject.setName("二维矢量数据的三维显示"); // 返回显示在三维场景中的矢量数据集,并按照设置的风格显示在三维场景中 Layer3DSettingVector layer3DSettingVector = new Layer3DSettingVector(); GeoStyle3D geoStyle3D = new GeoStyle3D(); geoStyle3D.setMarkerColor(Color.RED); geoStyle3D.setMarkerSize(10); layer3DSettingVector.setStyle(geoStyle3D); Layer3DDataset layer3DDatasetPoint = sceneObject.getLayers().add(targetDataset, layer3DSettingVector, true); layer3DDatasetPoint.updateData(); // 全幅显示三维场景 sceneObject.viewEntire(); sceneObject.refresh(); // 返回三维场景的XML形式的描述 String descriptionScene = sceneObject.toXML(); System.out.println("当前三维场景的信息:" + descriptionScene); }
限定符和类型 | 类和说明 |
---|---|
class |
Scene.TerrainInfo
场景中的地形信息类。
|
限定符和类型 | 方法和说明 |
---|---|
void |
addFlownListener(FlownListener l)
添加一个用于接收飞行结束事件(
FlownEvent )的监听器。 |
void |
addSceneClosedListener(SceneClosedListener l)
添加一个用于接收三维场景关闭事件(
SceneClosedEvent )的监听器。 |
void |
addSceneOpenedListener(SceneOpenedListener l)
添加一个用于接收三维场景打开事件(
SceneOpenedEvent )的监听器。 |
Slider |
addSlider(String name)
添加指定的滑块对象。
|
Splitter |
addSplitter(String name)
添加分隔条对象。
|
void |
addTokenInfo(String token)
添加token信息。
|
void |
addTokenInfo(String token,
String url)
添加token信息。
|
void |
addTokenInfo(String token,
String url,
CredentialType credentialType)
添加token信息。
|
static Point3D |
cartesianToGeographical(Point3D point,
SceneType sceneType)
将指定场景类型的地理坐标转成笛卡尔坐标。
|
static Rectangle2D |
ceilBounds(Rectangle2D bounds,
int level)
根据指定层数,计算指定地理范围(bounds)所对应行列缓存图片的外边框,该边框与三维缓存图片分块划分的边线一致。
|
void |
close()
关闭三维场景。
|
double |
computeSphericalArea(Point2Ds points)
计算由指定的点集合对象构成的多边形的球面面积。
|
double |
computeSphericalDistance(Point2D point1,
Point2D point2)
计算指定两点间的球面距离。
|
void |
dispose()
释放该对象所占用的资源。
|
void |
ensureVisible(Layer3D layer3d)
根据合适的图层观察尺度来显示场景。
|
void |
ensureVisible(Rectangle2D visibleBounds)
根据给定的经纬度范围显示相应区域的场景。
|
void |
ensureVisible(Rectangle2D visibleBounds,
int milliseconds)
根据指定的经纬度范围显示场景。
|
void |
ensureVisible(Rectangle2D visibleBounds,
int milliseconds,
double altitude)
根据给定的经纬度范围显示相应区域的场景,支持指定相机高度。
|
static ArrayList<Point3D> |
ENUToLonLat(ArrayList<Point3D> ptList,
Point3D lonlat)
将以经纬度作为插入点的笛卡尔坐标系的模型转成经纬度坐标。
|
static ArrayList<Point3D> |
ENUToLonLat(ArrayList<Point3D> ptList,
Point3D lonlat,
SceneType sceneType)
将以经纬度作为插入点的笛卡尔坐标系的模型转成经纬度坐标,在指定场景的球体类型上加载。
|
Selection3D[] |
findSelection(boolean hasObjectSelected)
返回当前三维场景的选择集。
|
void |
fly(Camera camera)
根据指定的目标相机对象进行飞行。
|
void |
fly(Camera camera,
boolean isDirect)
已过时。
|
void |
fly(Camera camera,
int milliseconds)
将相机对象按照指定的时间飞行到指定的目的地。
|
void |
fly(Camera camera,
int milliseconds,
boolean isDirect)
已过时。
|
void |
fly(Geometry targetObject,
FlyingMode flyingMode)
已过时。
|
void |
fly(Geometry targetObject,
int milliseconds)
已过时。
|
void |
fly(LookAt lookAt)
根据指定的目标相机对象进行飞行。
|
void |
fly(LookAt lookAt,
int milliseconds)
根据指定的目标相机对象和飞行时间进行飞行。
|
void |
flyCircle(Geometry geometry,
double speedRatio)
围绕指定地点旋转飞行模式,飞行过程中可以控制飞行的速度。
|
void |
flyCircle(Geometry geometry,
double speedRatio,
boolean isCycle)
围绕指定地点旋转飞行(FlyingCircle模式),可以控制飞行速度以及设置是否循环旋转
|
void |
flyPlay(Geometry line,
double speedRatio,
double distance)
已过时。
|
boolean |
fromXML(String xml)
通过 XML 数据创建三维场景对象。
|
static Point3D |
geographicalToCartesian(Point3D point,
SceneType sceneType)
将笛卡尔坐标转成指定场景类型的地理坐标。
|
double |
getAltitude(double longitude,
double latitude)
返回地面上某点的海拔高度。
|
Atmosphere |
getAtmosphere()
返回大气环境对象。
|
Point3D |
getAutoLockOffset()
返回相机相对于锁定对象的偏移量。
|
float |
getBrightness()
获取场景的亮度。
|
Camera |
getCamera()
返回当前场景的相机对象。
|
double |
getCameraFOV()
返回场景相机的视角,单位为度,范围为0-180度。
|
CameraFOVModeType |
getCameraFOVMode()
返回视场角模式。
|
Dataset |
getClipRegionDataset()
返回裁剪数据集。
|
boolean |
getCollisionDetection()
返回是否开启碰撞检测。
|
double |
getCollisionDistanceThreshold()
返回碰撞检测距离。
|
float |
getConstrast()
获取场景的对比度。
|
static Matrix |
getENUTransformMatrix(Point3D point)
返回插入点经纬度矩阵。
|
EnvironmentLight |
getEnvironmentLight()
获取环境光贴图。
|
Camera |
getFirstPersonCamera()
返回第一人称相机参数,区别于
getCamera() 方法。 |
FlyManager |
getFlyManager()
返回三维场景的飞行管理对象。
|
Fog |
getFog()
返回雾对象。
|
double |
getFogVisibleAltitude()
返回雾的可见高度,即离地球表面的海拔距离。
|
double |
getFPS()
返回当前场景的帧率,即帧/秒。
|
float |
getGamma()
获取场景的明度。
|
GlobalImage |
getGlobalImage()
返回 GlobalImage 对象。
|
Graphics3DType |
getGraphics3DType()
返回显示引擎类型。
|
double |
getHeight(double longitude,
double latitude)
获取场景中地面和模型上指定点的海拔高度。
|
double |
getHeight(double longitude,
double latitude,
boolean trackingLayerHeightAvailable)
获取场景中地面和模型上指定点的海拔高度,设置跟踪图层是否参与拾取高度。
|
float |
getHue()
获取场景的色相。
|
String |
getIServerCacheDirectory()
返回iServer服务缓存路径。
|
LatLonGrid |
getLatLonGrid()
返回经纬网对象。
|
Layer3Ds |
getLayers()
返回 3D 图层集合对象。
|
LookAt |
getLookAt()
获取当前场景的相机对象。
|
double |
getMaxCameraDistance()
返回场景相机的最大距离,单位为米。
|
double |
getMinCameraDistance()
返回场景相机的最小距离,单位为米。
|
ModelingObjectCollection |
getModelingObjectCollection()
返回建模对象的集合。
|
MultiViewportMode |
getMultiViewportMode()
设置当前场景的多视口模式类型
|
String |
getName()
返回当前三维场景的名称。
|
Ocean |
getOcean()
返回海洋对象。
|
OceanEffect |
getOceanEffect()
获取海洋特效。
|
ParallaxMode |
getParallaxMode()
返回立体显示模式的视差模式。
|
PrjCoordSys |
getPrjCoordSys()
返回在平面三维模式时的投影坐标系对象。
|
Query3D |
getQuery3D()
返回空间查询对象。
|
float |
getSaturation()
获取场景的饱和度。
|
SceneOverlapDisplayedOptions |
getSceneOverlapDisplayedOptions()
返回压盖参数。
|
SceneType |
getSceneType()
返回场景类型。
|
ScreenLayer3D |
getScreenLayer()
返回屏幕图层。
|
float |
getShadowDarkness()
返回场景阴影浓度。
|
float |
getShadowDepthBias()
返回阴影深度偏移。
|
double |
getShadowDistance()
同步新增接口getShadowDistance()用于获取阴影可见距离
|
double |
getShadowVisibleDistance()
返回阴影的可见距离,单位为米。
|
double |
getSkirtHeight()
获取TIN地形裙边高度,单位为米。
|
Sky |
getSky() |
Slider |
getSlider(String name)
获取指定的滑块对象。
|
int |
getSliderCount()
获取场景中滑块对象的个数。
|
Splitter |
getSplitter(String name)
获取指定的分隔条对象。
|
int |
getSplitterCount()
获取当前场景中分隔条的个数。
|
double |
getStereoEyeAngle()
返回立体显示模式时两摄像机的交叉角度,单位为度。
|
double |
getStereoEyeSeparation()
返回立体显示模式时两摄像机的距离,单位为米。
|
StereoMode |
getStereoMode()
返回立体显示的模式。
|
Sun |
getSun()
返回太阳对象。
|
float |
getSunLightCascadeShadowMapLamda()
返回场景主光源的级联阴影的分割点lamda值。
|
Color |
getSunLightColor()
同步新增接口getSunLightColor()用于获取太阳光颜色
|
double |
getSunLightIntensity()
获取太阳光强度
|
float |
getSunLightShadowSharpness()
返回主光源产生的阴影边缘的锐化程度。
|
double |
getTerrainExaggeration()
返回地形所夸大的比例。
|
Scene.TerrainInfo |
getTerrainInfo()
获取场景中的地形信息,包括最大值,最小值。
|
TerrainLayers |
getTerrainLayers()
返回三维场景中的地形图层集合。
|
Timer |
getTimer()
返回用于控制场景渲染的定时器,用户可以用来模拟场景飞行以及修改更新的速度,目前是20毫秒执行一次刷新。
|
TrackGeometry |
getTrackGeometry(int action)
对新建的三维线进行绘制时,返回要编辑的节点。
|
TrackingLayer3D |
getTrackingLayer()
返回 3D 跟踪图层对象。
|
Underground |
getUnderground()
返回 Underground 对象。
|
Rectangle2D |
getViewBounds()
返回当前场景的可视范围(Rectangle2D)。
|
WalkingMode |
getWalkMode()
返回场景漫游时的行走模式。
|
Workspace |
getWorkspace()
返回三维场景所关联的工作空间。
|
Point |
globeToPixel(Point3D point)
将三维点对象转换成屏幕点对象。
|
boolean |
isCreateSkirt()
获取场景是否创建地形裙边。
|
boolean |
isCrossVisible()
返回是否显示三维场景窗口中心位置标记。
|
boolean |
isDepthPrecisionOptimization()
返回场景是否开启深度优化,支持动态切换。
|
String |
iServerCacheDirectory()
返回服务器缓存文件路径。
|
boolean |
isFirstPersonView()
返回当前场景是否被设置为第一人称操作模式。
|
boolean |
isFullScreen()
已过时。
|
boolean |
isOverlapDisplayed()
返回压盖时是否显示。
|
boolean |
isReceiveShadow()
获取场景是否接收阴影。
|
boolean |
isScaleLegendVisible()
返回比例尺是否可见。
|
boolean |
isStereoEnabled()
返回是否开启立体显示功能。
|
boolean |
isStereoModeSupported(StereoMode mode)
返回当前系统是否支持所传入的立体显示模式。
|
boolean |
isSunLightCameraTrackingEnabled()
返回场景中模拟太阳光源使用时间的时区是否随着相机位置改变而相应修改。
|
boolean |
isTransparencyOptimization()
返回场景是否开启透明优化,支持模型缓存、模型数据集、跟踪层对象。
|
boolean |
isZoomFlyPitching()
获取场景是否放大至地表时执行俯仰操作。
|
static ArrayList<Point3D> |
lonLatToENU(ArrayList<Point3D> ptList,
Point3D lonlat)
将经纬度的点转成以经纬度作为插入点的ENU坐标。
|
static ArrayList<Point3D> |
lonLatToENU(ArrayList<Point3D> ptList,
Point3D lonlat,
SceneType sceneType)
将经纬度的点转成以经纬度作为插入点的ENU坐标,在椭球上加载。
|
boolean |
open(String name)
打开指定名称的三维场景。
|
boolean |
open(String iserverUrl,
String strSceneName)
通过iServer数据服务打开三维场景。
|
boolean |
outputScenePicture(String path,
int xResolution,
int yResolution)
场景是否输出高分辨率图片。
|
boolean |
outputScenePicture(String path,
int xResolution,
int yResolution,
boolean bHighPerformance)
场景是否输出高分辨率图片。
|
BufferedImage |
outputSceneToBitmap()
将三维场景输出为内存对象。
|
void |
pan(double offsetLongitude,
double offsetLatitude)
根据给定的经向平移距离和纬向平移距离,平移三维场景。
|
void |
pitch(double angle)
根据给定的角度值,对三维场景进行倾斜,从而从不同角度观察三维场景中的对象。
|
Point3D |
pixelToGlobe(Point point)
将屏幕点对象转换成三维点对象,该三维点对象包含了经纬度和海拔高度信息。
|
Point3D |
pixelToGlobe(Point point,
PixelToGlobeMode mode)
将屏幕点对象转换成三维点对象。
|
boolean |
projectionImagesToXML(String xmlPath)
视频投放的结果输出到xml文件
|
static Point3D |
pseudoCartesianToSpherical(Point3D point)
将伪直角坐标转换为经纬度坐标。
|
void |
refresh()
刷新三维场景。
|
void |
removeFlownListener(FlownListener l)
移除一个用于接收飞行结束事件(
FlownEvent )的监听器。 |
ModelingObjectCollection |
removeModelingObjectCollection() |
void |
removeSceneClosedListener(SceneClosedListener l)
移除一个用于接收三维场景关闭事件(
SceneClosedEvent )的监听器。 |
void |
removeSceneOpenedListener(SceneOpenedListener l)
移除一个用于接收三维场景打开事件(
SceneOpenedEvent )的监听器。 |
boolean |
removeSlider(String name)
移除指定的滑块对象。
|
boolean |
removeSplitter(String name)
移除指定的分隔条对象。
|
void |
render(Geometry geometry,
Symbol symbol,
GeoStyle3D geoStyle3D,
Resources resources)
用于Java桌面三维符号管理器使用
|
void |
roll(double angle)
将三维场景绕场景中心进行一定角度的旋转。
|
boolean |
roll(Point2D center,
double angle)
将三维场景绕某个中心点旋转。
|
void |
rollEye(double angle)
将三维场景绕视点进行一定角度的旋转。
|
void |
setAutoLockOffset(Point3D value)
设置相机相对于锁定对象的偏移量
通过调用该方法,可以在锁定目标对象时,改变相机对象相对于锁定对象的x轴、y轴、z轴偏移量,该偏移量暂时只适用于z轴。
|
void |
setAutoLockTarget(GeoModel value)
设置被锁定对象
当场景不断变化时,通过锁定跟踪对象,可使相机相对于被锁定对象的相对位置保持不变。
|
void |
setBrightness(float value)
设置场景的亮度。
|
void |
setCamera(Camera camera)
设置当前场景的相机对象。
|
void |
setCameraFOV(double value)
设置场景相机的视角,单位为度,范围为 0-180 度。
|
void |
setCameraFOVMode(CameraFOVModeType modeType)
设置视场角模式。
|
void |
setClipRegionDataset(Dataset dataset)
设置裁剪数据集。
|
void |
setCollisionDetection(boolean value)
设置是否开启碰撞检测。
|
void |
setCollisionDistanceThreshold(double value)
设置碰撞检测距离。
|
void |
setConstrast(float value)
设置场景的对比度。
|
void |
setCreateSkirt(boolean value)
设置场景是否创建地形裙边。
|
void |
setCrossVisible(boolean value)
设置是否显示三维场景窗口中心位置标记。
|
void |
setDepthPrecisionOptimization(boolean isDepthPrecisionOptimization)
设置场景是否开启深度优化,支持动态切换。
|
void |
setFirstPersonCamera(Camera camera)
设置第一人称相机参数,区别于
setCamera() 方法。 |
void |
setFirstPersonView(boolean value)
设置当前场景是否被设置为第一人称操作模式。
|
void |
setFog(Fog fog)
设置雾对象。
|
void |
setFogVisibleAltitude(double value)
设置雾的可见高度,即离地球表面的海拔距离。
|
void |
setFullScreen(boolean value)
已过时。
|
void |
setGamma(float value)
设置场景的明度。
|
void |
setHTCMoveSpeed(double speed)
设置场景速度倍率。
|
void |
setHue(float value)
设置场景的色相。
|
void |
setImagePath(String imagePath)
设置图片路径。
|
void |
setIServerCacheDirectory(String value)
设置 iServer 服务缓存路径。
|
void |
setLookAt(LookAt lookAt)
设置当前场景的相机对象。
|
void |
setMaxCameraDistance(double value)
设置场景相机的最大距离,单位为米。
|
void |
setMinCameraDistance(double value)
设置场景相机的最小距离,单位为米。
|
void |
setModelingObjectCollection(ModelingObjectCollection modelingObjectCollection)
设置建模对象的集合.
|
void |
setMultiViewportMode(MultiViewportMode mode)
设置当前场景的多视口模式类型
|
void |
setName(String value)
设置当前三维场景的名称。
|
void |
setOverlapDisplayed(boolean value)
设置压盖时是否显示。
|
void |
setParallaxMode(ParallaxMode value)
设置立体显示模式的视差模式。
|
void |
setPrjCoordSys(PrjCoordSys tarPrjCoordSys)
设置在平面三维模式时的投影坐标系对象。
|
void |
setReceiveShadow(boolean value)
设置场景是否接收阴影。
|
void |
setSaturation(float value)
设置场景的饱和度。
|
void |
setScaleLegendVisible(boolean value)
设置比例尺是否可见。
|
void |
setSceneOverlapDisplayedOptions(SceneOverlapDisplayedOptions options)
设置压盖参数。
|
void |
setSceneType(SceneType value)
设置三维场景的类型。
|
void |
setServerCacheDirectory(String value)
设置服务器缓存文件路径。
|
void |
setShadowDarkness(float shadowDarkness)
设置场景阴影浓度。
|
void |
setShadowDepthBias(float depthBias)
设置阴影深度偏移。
|
void |
setShadowDistance(double shadowDistance)
同步新增接口setShadowDistance()用于设置阴影可见距离
|
void |
setShadowVisibleDistance(double value)
设置阴影的可见距离,单位为米。
|
void |
setSkirtHeight(double skirtHeight)
设置TIN地形裙边高度,单位为米。
|
void |
setStereoEnabled(boolean value)
设置是否开启立体显示功能。
|
void |
setStereoEyeAngle(double value)
设置立体显示模式时两摄像机的交叉角度,单位为度。
|
void |
setStereoEyeSeparation(double value)
设置立体显示模式时两摄像机的距离,单位为米。
|
void |
setStereoMode(StereoMode value)
设置立体显示的模式。
|
void |
setSunLightCameraTrackingEnabled(boolean sunLightCameraTrackingEnabled)
设置场景中模拟太阳光源使用时间的时区是否随着相机位置改变而相应修改。
|
void |
setSunLightCascadeShadowMapLamda(float sunLightCascadeShadowMapLamda)
设置场景主光源的级联阴影的分割点lamda值。
|
void |
setSunLightColor(Color value)
同步新增接口setSunLightColor()用于设置太阳光颜色
|
void |
setSunLightIntensity(double value)
设置太阳光强度
|
void |
setSunLightShadowSharpness(float mainLightShadowSharpness)
设置主光源产生的阴影边缘的锐化程度。
|
void |
setTerrainExaggeration(double value)
设置地形所夸大的比例。
|
void |
setTransparencyOptimization(boolean isTransparencyOptimization)
设置场景是否开启透明优化,支持模型缓存、模型数据集、跟踪层对象。
|
void |
setWalkMode(WalkingMode walkMode)
设置场景漫游时的行走模式。
|
void |
setWorkspace(Workspace workspace)
设置三维场景所关联的工作空间。
|
void |
setZoomFlyPitching(boolean value)
设置场景是否放大至地表时执行俯仰操作。
|
static Point3D |
sphericalToCartesian(Point3D point)
将经纬度坐标转换为球面笛卡尔坐标。
|
static Point3D |
sphericalToPseudoCartesian(Point3D point)
将经纬度坐标转换为伪直角坐标。
|
void |
stopFly()
终止飞行操作,执行完后场景会处于静止状态。
|
static Rectangle2D |
toBounds(int level,
int columnIndex,
int rowIndex)
根据缓存层数,列索引和行索引返回对应的地理范围。
|
String |
toXML()
返回三维场景的的 XML 形式的描述。
|
void |
viewEntire()
全幅显示三维场景。
|
void |
zoom(double ratio)
根据给定的缩放比例,对三维场景进行缩放操作。
|
public Scene()
该构造函数创建的 Scene 对象,能够满足只需要解析场景的相关内容的使用。若需要进行显示,浏览等操作,请使用 SceneControl
。
public Scene(Workspace workspace)
该构造函数创建的 Scene 对象,能够满足只需要解析场景的相关内容的使用。若需要进行显示,浏览等操作,请使用 SceneControl
。
workspace
- 指定的 workspace 对象。public TrackGeometry getTrackGeometry(int action)
action
- action是Action3D中的枚举值。public boolean isOverlapDisplayed()
这里的压盖,目前包含文本数据集、地标、专题图的文字的压盖。
public void setOverlapDisplayed(boolean value)
这里的压盖,目前包含文本数据集、地标、专题图的文字的压盖。
value
- 压盖时是否显示。public double getFPS()
该数值通常用于判断三维场景的显示效率。
注意:该值小于20时,场景就会出现延迟的现象。
public Timer getTimer()
public Camera getCamera()
public void setCamera(Camera camera)
camera
- 当前场景的相机对象。public TerrainLayers getTerrainLayers()
public double getTerrainExaggeration()
public void setTerrainExaggeration(double value)
value
- 地形所夸大的比例。public LatLonGrid getLatLonGrid()
public Atmosphere getAtmosphere()
public Ocean getOcean()
public Sun getSun()
public Sky getSky()
public OceanEffect getOceanEffect()
public EnvironmentLight getEnvironmentLight()
public Underground getUnderground()
public GlobalImage getGlobalImage()
public boolean isScaleLegendVisible()
public void setScaleLegendVisible(boolean value)
value
- 一个布尔值指定比例尺是否可见。public boolean isCrossVisible()
public void setCrossVisible(boolean value)
value
- 是否显示三维场景窗口中心位置标记。public Selection3D[] findSelection(boolean hasObjectSelected)
该方法返回的是 Selection3D
类对象的数组,每一个 Selection3D
类对象为三维场景中一个图层中所有处于选中状态的对象集合。
hasObjectSelected
- 指定三维场景中是否有对象被选中。当设置为 true,该方法返回的是场景中有选择对象的图层的选择集;设置为 false 时,返回场景中所有图层的选择集。Selection3D
类对象数组,其中,每一个 Selection3D
类对象为三维场景中一个图层中所有处于选中状态的对象集合。public TrackingLayer3D getTrackingLayer()
public void setModelingObjectCollection(ModelingObjectCollection modelingObjectCollection)
modelingObjectCollection
- 建模对象集合。IllegalStateException
- 当前对象已被释放。public ModelingObjectCollection getModelingObjectCollection()
IllegalStateException
- 当前对象已被释放。public ModelingObjectCollection removeModelingObjectCollection()
public Workspace getWorkspace()
public void setWorkspace(Workspace workspace)
workspace
- 三维场景所关联的工作空间。public Layer3Ds getLayers()
public ScreenLayer3D getScreenLayer()
public Fog getFog()
public void setFog(Fog fog)
fog
- 雾对象。public double getAltitude(double longitude, double latitude)
longitude
- 地面上某点的经度。单位为度。latitude
- 地面上某点的纬度。单位为度。public void TestSceneGetAltitude(Scene sceneObject) { // 进行三维场景的设置 sceneObject.getAtmosphere().setVisible(true); sceneObject.setTerrainExaggeration(3); // 添加地形图层到三维场景中 TerrainLayers terrainLayers = sceneObject.getTerrainLayers(); TerrainLayer terrainLayer =terrainLayers.add("../../FrameData/GlobalTerrain/GlobalTerrain.sct", true); terrainLayer.setVisible(true); // 返回地面上某点的海拔高度 double altitudeValue = sceneObject.getAltitude(116, 39); System.out.println("地面上东经116度,北纬39度的海拔高度为:" + altitudeValue); }
public void setFogVisibleAltitude(double value)
value
- 雾的可见高度。单位为米。public double getFogVisibleAltitude()
@Deprecated public void fly(Geometry targetObject, FlyingMode flyingMode)
public void fly(Camera camera)
camera
- 指定的目标相机对象。public void TestSceneFly() { // 显示三维窗口,构造一个相机对象,并飞行到该相机对象 SceneControl sceneControl = new SceneControl(); Scene sceneObject = sceneControl.getScene(); Camera camera = new Camera(102, 31, 10000, AltitudeMode.RELATIVE_TO_GROUND, 0, 0); sceneObject.fly(camera); // 释放占用的资源 sceneControl.dispose(); }
public void fly(Camera camera, int milliseconds)
camera
- 指定的目标相机对象。milliseconds
- 相机飞行到指定目的地所耗费的时间。单位为毫秒。public void TestSceneFly() { // 显示三维窗口,构造一个相机对象,并以5秒的时间飞行到该相机对象 SceneControl sceneControl = new SceneControl(); Scene sceneObject = sceneControl.getScene(); Camera camera = new Camera(102, 31, 10000, AltitudeMode.RELATIVE_TO_GROUND, 0, 0); sceneObject.fly( ,5000); // 释放占用的资源 sceneControl.dispose(); }
@Deprecated public void fly(Geometry targetObject, int milliseconds)
@Deprecated public void fly(Camera camera, boolean isDirect)
@Deprecated public void fly(Camera camera, int milliseconds, boolean isDirect)
@Deprecated public void flyPlay(Geometry line, double speedRatio, double distance)
public void flyCircle(Geometry geometry, double speedRatio)
下图为几何对象围绕指定地点旋转飞行的效果图:
geometry
- 指定的目标几何对象speedRatio
- 指定的默认飞行速度的倍数public void TestSceneFly() { // 显示三维窗口 SceneControl sceneControl = new SceneControl(); Scene sceneObject = sceneControl.getScene(); //构造两个三维点对象 Point3D point3DStart=new Point3D (-100,-100,-100); Point3D point3DEnd=new Point3D (100,100,100); //将两个三维点对象加入三维点对象集合 Point3Ds points3D = new Point3Ds(); points3D.add(point3DStart); points3D.add(point3DEnd); //用三维点对象集合构造一条三维线几何对象 GeoLine3D line3D = new GeoLine3D(points3D); //围绕指定的三维线几何对象以飞行速度的2倍进行飞行 sceneObject.flyCircle(line3D,2.0); // 释放占用的资源 sceneControl.dispose(); }
public void flyCircle(Geometry geometry, double speedRatio, boolean isCycle)
geometry
- 目标几何对象speedRatio
- 飞行默认速度的倍数isCycle
- 是否循环旋转public void stopFly()
public Point3D pixelToGlobe(Point point)
若屏幕点不在地球范围内则返回的三维点经纬度和高度为 Double.NaN,即不是数字的值。
point
- 将被转换的屏幕点对象。public void testPixelToGlobe(Scene sceneObject) { // 进行三维场景的设置 sceneObject.getAtmosphere().setVisible(true); sceneObject.setTerrainExaggeration(3); // 地形图层到三维场景中 TerrainLayers terrainLayers = sceneObject.getTerrainLayers(); TerrainLayer terrainLayer =terrainLayers.add("../../FrameData/GlobalTerrain/GlobalTerrain.sct", true); terrainLayer.setVisible(true); // 将屏幕点对象转换成三维点对象 Point point = new Point(800, 600); Point3D point3D = sceneObject.pixelToGlobe(point); System.out.println("转换后的三维点对象为:" + point3D.toString()); sceneObject.refresh(); }
public Point3D pixelToGlobe(Point point, PixelToGlobeMode mode)
point
- 指定的屏幕点对象。mode
- 屏幕点对象转换为三维点对象的求交类型。public Point globeToPixel(Point3D point)
当指定的三维点对象不在当前相机范围内的时候,改方法将返回(-1,-1),表示此点不可见。
point
- 将被转换的三维点坐标对象,该点对象包含了经纬度和海拔高度信息。public void TestGlobeToPixel(Scene sceneObject) { // 进行三维地图景场景的设置 sceneObject.getAtmosphere().setVisible(true); sceneObject.setTerrainExaggeration(3); // 将地形图层添加到三维场景中 TerrainLayers terrainLayers = sceneObject.getTerrainLayers(); TerrainLayer terrainLayer =terrainLayers.add("../../FrameData/GlobalTerrain/GlobalTerrain.sct", true); terrainLayer.setVisible(true); // 将三维点对象转换成二维点对象 double altitudeValue = sceneObject.getAltitude(126, 31); Point3D point3D = new Point3D(126, 31, altitudeValue); Point point = sceneObject.globeToPixel(point3D); System.out.println("转换后的屏幕点对象为:" + point.toString()); sceneObject.refresh(); }
public void dispose()
public void pan(double offsetLongitude, double offsetLatitude)
下图为对三维场景进行平移操作的效果图:
offsetLongitude
- 经向平移距离。单位为度。offsetLatitude
- 纬向平移距离。单位为度。public void zoom(double ratio)
下图为对三维场景进行缩放操作的效果图:
ratio
- 缩放比例。缩放比例的范围为负无穷大到1,其中当参数为(0,1)之间的数值时,场景按比例放大;参数为小于0数值时,场景按比例缩小,但在缩小到一定程度后不会再缩小。public void TestSceneZoom(Scene sceneObject) { // 按照一定的比例缩放当前三维场景 sceneObject.zoom(0.5); }
public void pitch(double angle)
下图为对三维场景进行一定角度倾斜的效果图:
angle
- 角度。单位为度。public void viewEntire()
下图为对三维场景进行全幅显示操作的效果图:
Scene
类的示例。public void refresh()
Scene
类的示例。public boolean fromXML(String xml)
xml
- XML 数据。public double getCameraFOV()
public void setCameraFOV(double value)
value
- 场景相机的视角。单位为度。public double getMaxCameraDistance()
public void setMaxCameraDistance(double value)
value
- 场景相机的最大距离。单位为米。public double getMinCameraDistance()
public void setMinCameraDistance(double value)
value
- 场景相机的最小距离。单位为米。public boolean open(String name)
name
- 指定的三维场景的名称。public boolean open(String iserverUrl, String strSceneName)
iserverUrl
- iServer三维服务的URL。strSceneName
- 指定的三维场景名称。public void close()
public void setName(String value)
value
- 当前三维场景的名称。public String getName()
public void roll(double angle)
下图为三维场景绕场景中心进行一定角度旋转的效果图:
angle
- 指定的角度。单位为度。public boolean roll(Point2D center, double angle)
下图为三维场景绕场景中心(即某个中心点)进行一定角度旋转的效果图:
center
- 指定的中心点,该点采用经纬度坐标来表示。angle
- 三维场景的旋转角度。单位为度。public void rollEye(double angle)
下图为三维场景绕视点进行一定角度旋转的效果图:
angle
- 指定的角度。单位为度。public double computeSphericalDistance(Point2D point1, Point2D point2)
point1
- 需要进行距离计算的一个点。point2
- 需要进行距离计算的另外一个点。public double computeSphericalArea(Point2Ds points)
points
- 构成需要进行计算面积的多边形的点集合对象。public void ensureVisible(Rectangle2D visibleBounds)
visibleBounds
- 需要全幅显示的经纬度范围。public void TestSceneEnsureVisible(Scene sceneObject) { // 根据给定的经纬度范围显示相应区域的三维场景 Rectangle2D viewRegion = new Rectangle2D(100, 20, 106, 36); sceneObject.ensureVisible(viewRegion); }
public void ensureVisible(Rectangle2D visibleBounds, int milliseconds)
visibleBounds
- 需要全副显示的经纬度范围。milliseconds
- 到达指定目的地所耗费的时间。单位为毫秒。public void ensureVisible(Rectangle2D visibleBounds, int milliseconds, double altitude)
visibleBounds
- 需要全幅显示的经纬度范围。milliseconds
- 到达指定目的地所耗费的时间。单位为毫秒。altitude
- 停留的相机高度。public void ensureVisible(Layer3D layer3d)
layer3d
- 需要显示的图层。public BufferedImage outputSceneToBitmap()
BufferedImage
对象。public void addFlownListener(FlownListener l)
FlownEvent
)的监听器。l
- 一个用于接收飞行结束事件的监听器。public void removeFlownListener(FlownListener l)
FlownEvent
)的监听器。l
- 一个用于接收飞行结束事件的监听器。public void addSceneOpenedListener(SceneOpenedListener l)
SceneOpenedEvent
)的监听器。l
- 一个用于接收三维场景打开事件的监听器。public void removeSceneOpenedListener(SceneOpenedListener l)
SceneOpenedEvent
)的监听器。l
- 一个用于接收三维场景打开事件的监听器。public void addSceneClosedListener(SceneClosedListener l)
SceneClosedEvent
)的监听器。l
- 一个用于接收三维场景关闭事件(SceneClosedEvent
)的监听器。public void removeSceneClosedListener(SceneClosedListener l)
SceneClosedEvent
)的监听器。l
- 一个用于接收三维场景关闭事件的监听器。public static Rectangle2D toBounds(int level, int columnIndex, int rowIndex)
level
- 指定的缓存层数。columnIndex
- 指定的缓存图片的列索引。rowIndex
- 指定的缓存图片的行索引。public static Rectangle2D ceilBounds(Rectangle2D bounds, int level)
在手动生成局部缓存,然后结合 iServer 动态发布时,需要通过该方法对手动生成的缓存范围进行规整,以避免指定地理范围(bounds)的缓存图片的边界出现部分白图现象。
bounds
- 某层数下指定的生成缓存的地理范围。level
- 指定的层数。public boolean isStereoEnabled()
public void setStereoEnabled(boolean value)
value
- 是否开启立体显示功能。public void setStereoDisplay() { // 显示三维窗口 SceneControl sceneControl = new SceneControl(); Scene sceneObject = sceneControl.getScene(); if(!sceneObject.isStereoEnabled()) { // 开启立体显示功能 sceneObject.setStereoEnabled(true); } // 设置场景的立体显示模式为四缓存式立体 sceneObject.setStereoMode(StereoMode.QUAD_BUFFER); // 设置场景的视差模式为正视差 sceneObject.setParallaxMode(ParallaxMode.POSITIVE_PARALLAX); // 设置两摄像机的距离 sceneObject.setStereoEyeSeparation(0.06); // 设置两摄像机的交叉角度 sceneObject.setStereoEyeAngle(-0.025); }
public StereoMode getStereoMode()
ANAGLYPHIC
public void setStereoMode(StereoMode value)
value
- 立体显示的模式。setStereoEnabled()
方法的示例。public double getStereoEyeSeparation()
public void setStereoEyeSeparation(double value)
两摄像机的距离在正视差模式(POSITIVE_PARALLAX)
下的单位为厘米,因此正视差模式下,在大范围通过该方法设置两摄像机之间的距离没有效果。
value
- 立体显示模式时两摄像机的距离。单位为米。setStereoEnabled()
方法的示例。public double getStereoEyeAngle()
该方法仅在正视差模式下有效,表示两摄像机的交叉角度大小,其意义在于调整双目视线的交点位置,可以增加或减弱景物的景深感。
public void setStereoEyeAngle(double value)
value
- 立体显示模式时两摄像机的交叉角度。单位为度。setStereoEnabled()
方法的示例。public void setParallaxMode(ParallaxMode value)
value
- 立体显示模式的视差模式。public ParallaxMode getParallaxMode()
POSITIVE_PARALLAX
@Deprecated public boolean isFullScreen()
@Deprecated public void setFullScreen(boolean value)
public boolean isStereoModeSupported(StereoMode mode)
mode
- 指定的需要判断的立体显示模式。public void setIServerCacheDirectory(String value)
value
- iServer服务缓存路径。public String getIServerCacheDirectory()
public void setAutoLockTarget(GeoModel value)
当场景不断变化时,通过锁定跟踪对象,可使相机相对于被锁定对象的相对位置保持不变。
value
- 锁定对象public void setAutoLockOffset(Point3D value)
通过调用该方法,可以在锁定目标对象时,改变相机对象相对于锁定对象的x轴、y轴、z轴偏移量,该偏移量暂时只适用于z轴。
通过为point3D对象的x、y、z赋值来设置相机相对于锁定对象的偏移量。
value
- 相机相对于锁定对象的偏移量。public Point3D getAutoLockOffset()
通过调用该方法,可以在锁定目标对象时,改变相机相对于锁定对象的x轴、y轴和z轴偏移量,该偏移量暂时只适用于z轴。
public Camera getFirstPersonCamera()
getCamera()
方法。
getCamera() 方法返回的是以屏幕中心点作为基准点的场景位置。
getFirstPersonCamera() 方法返回的是以当前场景的摄像机(即人眼观看的位置)为基准点操作,相对于前者该方法能够提供更加真实的操作感受,提供比前者更加广泛的可视范围。
public void setFirstPersonCamera(Camera camera)
setCamera()
方法。
setCamera() 方法是以屏幕中心点作为基准点设置场景位置的。
setFirstPersonCamera() 方法是以当前场景的摄像机(即人眼观看的位置)为基准点操作,相对于前者该方法能够提供更加真实的操作感受,提供比前者更加广泛的可视范围。
camera
- 欲设置的第一人称相机参数结构体。public boolean isFirstPersonView()
public void setFirstPersonView(boolean value)
value
- 当前场景是否被设置为第一人称操作模式。public FlyManager getFlyManager()
public double getShadowVisibleDistance()
public void setShadowVisibleDistance(double value)
value
- 阴影的可见距离。单位为米。public SceneType getSceneType()
public void setSceneType(SceneType value)
value
- 三维场景的类型。public static Point3D sphericalToCartesian(Point3D point)
point
- 待转换的坐标值。public static Point3D sphericalToPseudoCartesian(Point3D point)
point
- 待转换的坐标值。public static Point3D pseudoCartesianToSpherical(Point3D point)
point
- 待转换的坐标值。public void setMultiViewportMode(MultiViewportMode mode)
mode
- public MultiViewportMode getMultiViewportMode()
public void fly(LookAt lookAt)
lookAt
- 指定的LookAt相机对象。public void fly(LookAt lookAt, int milliseconds)
lookAt
- 指定的LookAt相机对象。milliseconds
- 相机飞行到指定目的地所耗费的时间。单位为毫秒。public LookAt getLookAt()
public void setLookAt(LookAt lookAt)
lookAt
- 指定的相机对象。public boolean removeSplitter(String name)
name
- 指定的分隔条名称。public int getSplitterCount()
public boolean removeSlider(String name)
name
- 指定的滑块名称。public int getSliderCount()
public double getHeight(double longitude, double latitude)
longitude
- 指定点的经度。latitude
- 指定点的纬度。public double getHeight(double longitude, double latitude, boolean trackingLayerHeightAvailable)
longitude
- 指定点的经度。latitude
- 指定点的纬度。trackingLayerHeightAvailable
- 指定跟踪图层是否参与拾取高度。public float getBrightness()
public void setBrightness(float value)
value
- 指定的亮度。public float getConstrast()
public void setConstrast(float value)
value
- 指定的对比度。public float getGamma()
public void setGamma(float value)
value
- 指定的明度。public float getHue()
public void setHue(float value)
value
- 指定的色相。public float getSaturation()
public void setSaturation(float value)
value
- 指定的饱和度。public boolean isCreateSkirt()
public void setCreateSkirt(boolean value)
value
- 是否创建地形裙边。public boolean isReceiveShadow()
public void setReceiveShadow(boolean value)
value
- 是否接收阴影。public boolean isZoomFlyPitching()
public void setZoomFlyPitching(boolean value)
value
- 是否放大至地表时执行俯仰操作。public Scene.TerrainInfo getTerrainInfo()
public String iServerCacheDirectory()
public void setServerCacheDirectory(String value)
value
- 指定的服务器缓存文件路径。public boolean outputScenePicture(String path, int xResolution, int yResolution)
path
- 指定的图片存放路径。xResolution
- 指定的分辨率x值。yResolution
- 指定的分辨率y值。public boolean outputScenePicture(String path, int xResolution, int yResolution, boolean bHighPerformance)
path
- 指定的图片存放路径。xResolution
- 指定的分辨率x值。yResolution
- 指定的分辨率y值。bIsHighPerformance
- 是否采用高性能模式出图(占用内存显存高,出图快)public Rectangle2D getViewBounds()
public void render(Geometry geometry, Symbol symbol, GeoStyle3D geoStyle3D, Resources resources)
geometry
- symbol
- geoStyle3D
- resources
- public void setImagePath(String imagePath)
imagePath
- 图片路径。public PrjCoordSys getPrjCoordSys()
目前在平面三维模式下,投影坐标系对象中的投影类型只可以选择地理经纬坐标系和墨卡托投影坐标系。
public void setPrjCoordSys(PrjCoordSys tarPrjCoordSys)
目前在平面三维模式下,投影坐标系对象中的投影类型只可以选择地理经纬坐标系和墨卡托投影坐标系。
tarPrjCoordSys
- 在平面三维模式时的投影坐标系对象。public static ArrayList<Point3D> ENUToLonLat(ArrayList<Point3D> ptList, Point3D lonlat)
ptList
- 待转换的点列表。lonlat
- 指定插入点坐标。public static ArrayList<Point3D> lonLatToENU(ArrayList<Point3D> ptList, Point3D lonlat)
ptList
- 经纬度的三维点集。lonlat
- 输入一个经纬度的三维点作为插入点。public boolean isDepthPrecisionOptimization()
public void setDepthPrecisionOptimization(boolean isDepthPrecisionOptimization)
isDepthPrecisionOptimization
- 是否开启深度优化。public boolean isTransparencyOptimization()
public void setTransparencyOptimization(boolean isTransparencyOptimization)
isTransparencyOptimization
- 是否开启透明优化public CameraFOVModeType getCameraFOVMode()
public void setCameraFOVMode(CameraFOVModeType modeType)
modeType
- 场景视场角模式。public void setHTCMoveSpeed(double speed)
speed
- 场景速度倍率。public boolean projectionImagesToXML(String xmlPath)
xmlPath
- xml文件全路径。public Dataset getClipRegionDataset()
public void setClipRegionDataset(Dataset dataset)
dataset
- 被裁剪的数据集。public void addTokenInfo(String token)
token
- token值。public void addTokenInfo(String token, String url)
token
- token值。url
- url地址。public void addTokenInfo(String token, String url, CredentialType credentialType)
token
- token值。url
- url地址。credentialType
- 凭证类型。public Query3D getQuery3D()
public static ArrayList<Point3D> ENUToLonLat(ArrayList<Point3D> ptList, Point3D lonlat, SceneType sceneType)
ptList
- 待转换的点列表。lonlat
- 指定插入点坐标。sceneType
- 球体类型,包含圆球和椭球。public static ArrayList<Point3D> lonLatToENU(ArrayList<Point3D> ptList, Point3D lonlat, SceneType sceneType)
ptList
- 经纬度的三维点集。lonlat
- 输入一个经纬度的三维点作为插入点。sceneType
- 球体类型,包含圆球和椭球。public static Matrix getENUTransformMatrix(Point3D point)
point
- 椭球插入点的经纬度。public static Point3D cartesianToGeographical(Point3D point, SceneType sceneType)
point
- 经纬度坐标sceneType
- 球体类型,包含圆球(GLOBE)和椭球(ELLIPSOIDWGS84)。public static Point3D geographicalToCartesian(Point3D point, SceneType sceneType)
point
- 待转换的笛卡尔坐标sceneType
- 球体类型,包含圆球(GLOBE)和椭球(ELLIPSOIDWGS84)。public double getSkirtHeight()
public void setSkirtHeight(double skirtHeight)
skirtHeight
- TIN地形裙边高度。public SceneOverlapDisplayedOptions getSceneOverlapDisplayedOptions()
public void setSceneOverlapDisplayedOptions(SceneOverlapDisplayedOptions options)
options
- 压盖参数。实现图标图层压盖重叠间距,单位为像素;图标是否随文字显隐等设置。public WalkingMode getWalkMode()
public void setWalkMode(WalkingMode walkMode)
walkMode
- 场景漫游行走模式public boolean getCollisionDetection()
public void setCollisionDetection(boolean value)
value
- public double getCollisionDistanceThreshold()
public void setCollisionDistanceThreshold(double value)
value
- 碰撞检测距离。public Graphics3DType getGraphics3DType()
public float getShadowDarkness()
public void setShadowDarkness(float shadowDarkness)
shadowDarkness
- 场景阴影浓度。public double getShadowDistance()
public void setShadowDistance(double shadowDistance)
public float getSunLightCascadeShadowMapLamda()
public void setSunLightCascadeShadowMapLamda(float sunLightCascadeShadowMapLamda)
sunLightCascadeShadowMapLamda
- 场景主光源的级联阴影的分割点lamda值。public float getSunLightShadowSharpness()
public void setSunLightShadowSharpness(float mainLightShadowSharpness)
mainLightShadowSharpness
- 主光源产生的阴影边缘的锐化程度。public boolean isSunLightCameraTrackingEnabled()
public void setSunLightCameraTrackingEnabled(boolean sunLightCameraTrackingEnabled)
sunLightCameraTrackingEnabled
- 场景中模拟太阳光源使用时间的时区是否随着相机位置改变而相应修改。public Color getSunLightColor()
public void setSunLightColor(Color value)
public double getSunLightIntensity()
public void setSunLightIntensity(double value)
public float getShadowDepthBias()
IllegalStateException
- 当前对象已被释放。public void setShadowDepthBias(float depthBias)
depthBias
- 阴影深度偏移。IllegalStateException
- 当前对象已被释放。Copyright © 2021–2024 SuperMap. All rights reserved.