2014-12-18 3 views
1

나는 PolygonGeometry을 세슘의 공중에 배치하려고합니다. 즉, height을 사용하여지면에서 오프셋을 생성하고 extrudedHeight을 사용하여 오브젝트에 특정 두께를 지정하고 싶습니다. 그러나 extrudedHeight를 설정하면 높이 설정 자체가 무시되고 돌출이지면까지 끝납니다. 그래서 저는 평면을 서로 위에 쌓을 수는 있지만 3 차원 물체는 겹칠 수 없습니다. 이것을 달성하는 올바른 방법은 무엇입니까?공기 중에 세슘의 폴리곤 지오메트리 배치

 polygonGeometry = Cesium.PolygonGeometry.fromPositions(
      positions: pos, 
      vertexFormat: Cesium.PerInstanceColorAppearance.VERTEX_FORMAT     
      extrudedHeight: @options.extrudedHeight, 
      height:@options.height 
     ) 

     geometryInstance = new Cesium.GeometryInstance 
      geometry: polygonGeometry 

     primitive = new Cesium.Primitive 
      geometryInstances: [geoInstance] 

답변

2

그것은 당신의 예제는 불완전하기 때문에 문제가 무엇인지 정확히 말하기 어렵다 또한 난 것을 데이터 바인딩의 양식을 사용하는 것으로 보인다 여기

내가 지금까지 뭘하는지입니다 익숙하지 않은. 그러나 비교할 수 있도록 Sandcastle에 복사하여 붙여 넣을 수있는 완전한 예제가 있습니다.

var viewer = new Cesium.Viewer('cesiumContainer'); 
var scene = viewer.scene; 

var positions = Cesium.Cartesian3.fromDegreesArray([ 
    -88.0, 35.0, 
    -80.0, 35.0, 
    -80.0, 40.0, 
    -88.0, 40.0 
]); 

var geometryInstance = new Cesium.GeometryInstance({ 
    geometry : Cesium.PolygonGeometry.fromPositions({ 
     positions : positions, 
     height: 1000000, 
     extrudedHeight: 1500000, 
     vertexFormat : Cesium.PerInstanceColorAppearance.VERTEX_FORMAT 
    }), 
    attributes: { 
     color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.ORANGE) 
    } 
}); 

scene.primitives.add(new Cesium.Primitive({ 
    geometryInstances : geometryInstance, 
    appearance : new Cesium.PerInstanceColorAppearance({ 
     closed : true, 
     translucent : false 
    }) 
})); 
+0

감사합니다. 덕분에 도움이되었습니다. 명확히하기 위해, 나는 높이 x에 무언가를 위치시키고 그것을 10 미터 정도 밀어 내고 싶었다. 저는 높이를 x로 설정하고 높이를 10으로 밀어 내었습니다 (다른 이상한 조합과 마찬가지로). 귀하의 예에서는 높이를 x로, x + 10으로 높이를 배웠습니다. – Nicolas78

+0

그 말이 완벽합니다. 문서를 명확히하기 위해 동작을보다 자세하게 설명 할 것입니다. –