3D 입체격자를 사용하여, 기존의 삼차원 지도가 보여주지 못하는 깊이감을 표현할 수 있도록 구현 하였습니다.
JS SCRIPT
// 입체격자 레이어 생성
createCube3DLayer = function ()
{
undergroundCubeLayer = cmworld.addCube3DLayer("underground", "http://demo.cmworld.net/cube3d/cbr/{z}/{y}/{x}/{y}_{x}_{f}.cbr", 0, 14, -10, 10000, 4194304, "raster", "cbr");
undergroundCubeLayer.renderFrame = true;
undergroundCubeLayer.pointColors[0] = new THREE.Color(0x47cc00);
undergroundCubeLayer.pointColors[1] = new THREE.Color(0xeb9600);
undergroundCubeLayer.pointColors[2] = new THREE.Color(0x3901ad);
undergroundCubeLayer.pointColors[3] = new THREE.Color(0x47cc00);
undergroundCubeLayer.pointColors[4] = new THREE.Color(0xeb1100);
undergroundCubeLayer.pointColors[5] = new THREE.Color(0xeb9600);
undergroundCubeLayer.pointColors[6] = new THREE.Color(0x3901ad);
undergroundCubeLayer.pointColors[7] = new THREE.Color(0x47cc00);
undergroundCubeLayer.pointColors[8] = new THREE.Color(0x6a3b37);
undergroundCubeLayer.pointColors[9] = new THREE.Color(0x47cc00);
undergroundCubeLayer.pointColors[10] = new THREE.Color(0xeb1100);
undergroundCubeLayer.pointColors[11] = new THREE.Color(0xeb9600);
undergroundCubeLayer.pointColors[12] = new THREE.Color(0x3901ad);
undergroundCubeLayer.pointColors[13] = new THREE.Color(0x6a3b37);
undergroundCubeLayer.pointColors[21] = new THREE.Color(0xff0000);
undergroundCubeLayer.pointColors[22] = new THREE.Color(0x00ff00);
undergroundCubeLayer.pointColors[23] = new THREE.Color(0x0000ff);
undergroundCubeLayer.pointColors[24] = new THREE.Color(0xffff00);
undergroundCubeLayer.pointColors[25] = new THREE.Color(0x00ffff);
undergroundCubeLayer.pointColors[26] = new THREE.Color(0xff00ff);
// 사용자 객체를 만들자
var geo = new THREE.SphereGeometry(1);
var material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
var mesh = new THREE.Mesh(geo, material);
mesh.frustumCulled = false;
clippingcenter = new CMWORLD.UserObject("center", mesh, new THREE.Vector3(127.02757826432276, 37.49802454065084, 13.42819338105619), null);
userLayer.add(clippingcenter);
//undergroundCubeLayer.addTargetCamera("camera", 14, 100);
undergroundCubeLayer.addTargetObject("center", clippingcenter, 13, 5);
/*
지표 = 0
하늘 = 1
바다 = -2
땅속 = 21 ~ 26
*/
}
// 입체격자 레이어 생성
createCube3DLayer2 = function ()
{
flyCubeLayer = cmworld.addCube3DLayer("fly", "http://demo.cmworld.net/cube3d/cbr_vector/{z}/{y}/{x}/{y}_{x}_{f}.cbr", 0, 14, -10, 100000, 4194304, "vector", "cbr");
flyCubeLayer.renderFrame = true;
flyCubeLayer.renderOnlyFrame = true;
// 사용자 객체를 만들자
var geo = new THREE.SphereGeometry(10);
var material = new THREE.MeshBasicMaterial({ color: 0xff0000 });
var mesh = new THREE.Mesh(geo, material);
flycenter = new CMWORLD.UserObject("fly", mesh, new THREE.Vector3(127.02992490492944, 37.49314254229226, 20), null);
userLayer.add(flycenter);
//undergroundCubeLayer.addTargetCamera("camera", 14, 100);
flyCubeLayer.addTargetObject2("fly0", flycenter, 0, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly1", flycenter, 1, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly2", flycenter, 2, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly3", flycenter, 3, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly4", flycenter, 4, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly5", flycenter, 5, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly6", flycenter, 6, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly7", flycenter, 7, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly8", flycenter, 8, 10000, new THREE.Color(0, 0, 0.5));
flyCubeLayer.addTargetObject2("fly9", flycenter, 9, 5000, new THREE.Color(0, 0, 0.2));
flyCubeLayer.addTargetObject2("fly10", flycenter, 10, 2000, new THREE.Color(0, 0.5, 0.5));
flyCubeLayer.addTargetObject2("fly11", flycenter, 11, 1280, new THREE.Color(0, 0.5, 0.8));
flyCubeLayer.addTargetObject2("fly12", flycenter, 12, 640, new THREE.Color(0, 0.5, 1));
flyCubeLayer.addTargetObject2("fly13", flycenter, 13, 320, new THREE.Color(0.5, 0.5, 0.1));
flyCubeLayer.addTargetObject2("fly14", flycenter, 14, 160, new THREE.Color(0.5, 0.8, 0));
flyCubeLayer.addTargetObject2("fly15", flycenter, 15, 80, new THREE.Color(1, 0.5, 0));
flyCubeLayer.addTargetObject2("fly16", flycenter, 16, 40, new THREE.Color(1, 0.2, 0));
flyCubeLayer.addTargetObject2("fly17", flycenter, 17, 30, new THREE.Color(1, 0, 0));
flyCubeLayer.addTargetObject2("fly", flycenter, 18, 20, new THREE.Color(1, 1, 1));
}