EgisCorp / XDWorld

WebGL 기반 3D GIS 엔진
15 stars 7 forks source link

다각형을 서로 다른 축을 중심으로 회전시킬 수 있나요? #455

Open shafqatjamil opened 1 day ago

shafqatjamil commented 1 day ago

엔진 버전 :2.8.4

문의 내용 :다각형을 서로 다른 축을 중심으로 회전시킬 수 있나요? `function TraceTarget(target) {

var layerList = new Module.JSLayerList(true);
var layer = layerList.createLayer("glTF_Test", Module.ELT_POLYHEDRON);
var polygon = Module.createGLTF("GLTF_Object");
polygon.loadFile({
    url: GLOBAL.model_url,
    type: "glb",
    position: target,
    rotate: 180,
    rebuild: true,
    callback: function (e) {
        // polygon.setAnimationByID(0);
        // polygon.setScale(new Module.JSSize3D(1.0, 1.0, 1.0));
        GLOBAL.TRACE_TARGET = Module.createTraceTarget(polygon.getId());
        GLOBAL.TRACE_TARGET.set({
            object: polygon,
            tilt: 160.0,
            direction: 0.0,
            distance: 7.0
        });

        layer.addObject(polygon, 0);

        var camera = Module.getViewCamera();
        camera.setPermitUnderGround(false);
        // camera.setLimitTilt(-360);

        camera.setTraceTarget(GLOBAL.TRACE_TARGET);
        camera.setTraceActive(true);
    }
});

}`

hjaejae commented 1 day ago

아래와 같은 이벤트를 추가하여 이동 및 회전을 할 수 있습니다.

shafqatjamil commented 15 hours ago

귀하의 빠른 답변에 감사드립니다. 하지만 제 문제는 조금 다릅니다. 현재 3D 모델과 애니메이션을 사용하고 있으며, 귀하의 버퍼 크기 수정 이후 애니메이션은 정상 작동하고 있지만, 모델의 방향이 올바르지 않습니다. 모델을 폴리곤에 할당했을 때 방향을 수정할 방법이 있을까요? 스크린샷을 확인해 주시면 감사하겠습니다. 모델이 표면 위에 서 있는 대신 표면과 평행하게 정렬되어 있는 상태입니다. 모델의 방향을 x축 기준으로 90도 회전시켜야 할 것 같습니다. 현재 폴리곤에서 사용할 수 있는 회전은 y축 기준으로만 가능한 것으로 보입니다.

제 스크립트를 참고용으로 첨부하였습니다. 답변해 주시면 감사하겠습니다.

https://drive.google.com/file/d/1Q8XIrPU2yab2j1u_U4ZQVtG0UoZNEob-/view?usp=sharing

` function renewObjectMoving() { if (GLOBAL.TRACE_TARGET == null) { return; } let anim = -1; var move_front = 0.0; var move_right = 0.0;

if (GLOBAL["KEY_PRESS_w"]) {
    move_front = 1.0;
    anim = 7;

} else if (GLOBAL["KEY_PRESS_s"]) {
    move_front = -1.0;
    anim = 0;

}
if (GLOBAL["KEY_PRESS_a"]) {
    move_right = -1.0;
    anim = 4;

} else if (GLOBAL["KEY_PRESS_d"]) {
    move_right = 1.0;
    anim = 6;
}
GLOBAL.TRACE_TARGET.move(move_front, move_right, true);
setAnimation(anim);
Module.XDRenderData();

} function TraceTarget(target) {

var layerList = new Module.JSLayerList(true);
var layer = layerList.createLayer("glTF_Test", Module.ELT_POLYHEDRON);
var polygon = Module.createGLTF("GLTF_Object");
polygon.loadFile({
    url: GLOBAL.model_url,
    type: "glb",
    position: target,
    rotate: 180,
    rebuild: true,
    callback: function (e) {
        // polygon.setAnimationByID(0);
        // polygon.setScale(new Module.JSSize3D(1.0, 1.0, 1.0));
        GLOBAL.TRACE_TARGET = Module.createTraceTarget(polygon.getId());
        GLOBAL.TRACE_TARGET.set({
            object: polygon,
            tilt: 160.0,
            direction: 0.0,
            distance: 7.0
        });
        layer.addObject(polygon, 0);
        var camera = Module.getViewCamera();
        camera.setPermitUnderGround(false);
        camera.setTraceTarget(GLOBAL.TRACE_TARGET);
        camera.setTraceActive(true);
    }
});

} `

hjaejae commented 2 hours ago

네~ 현재는 Y축 기준으로만 회전이됩니다. 다음 업데이트 예정일인 12월 6일에 hotfix로 기능을 추가하여 업데이트 하겠습니다.