2012-05-31 5 views
0

저는이 라이브러리에 익숙해 져 있다고 생각합니다. 내가 함수r.interactor의 키보드 이벤트

이 나는 ​​사용자가 "V"를 누르면 여부를 확인 할 lesson 10

에 같은 렌더링 볼륨을하고 실행하려는

1) 내가 시도 것입니다 :

window.onload = function() { 

    var r = new X.renderer3D(); 
    r.init(); 

    var volume = new X.volume(); 
    volume.file = 'http://lessons.goXTK.com/data/avf.nrrd'; 
    var vr = false; 

    function vRender() { 
     if (vr) { 
      volume.volumeRendering = true; 
      volume.opacity = 0.15; 
      r.render(); 
     } 
    } 


    r.interactor.onKey = function(event) { 
     if (event.keyCode == 86) { 
      vr = true; 
      vRender(); 
     } 
    } 

    r.add(volume); 
    r.camera.position = [120, 80, 160]; 
    r.render(); 

}; 

2)는 어떻게 슬라이스 층을 잡아 또는 세 개의 축 비활성화 할 수 있는가? 내가 시도한 것과 비슷한 방식으로 작동합니까?

var volume = new X.volume(); 
volume.file = 'http://lessons.goXTK.com/data/avf.nrrd'; 

volume.sliceX.visible = false; 
volume.sliceZ.visible = false; 

어떤 도움도 받으실 수 있습니다!

답변

1

2)

예, 그것은 비슷한 방법으로 가능하다. 차이는 volume._sliceX 사용할 수 없습니다 (컴파일시 내 보내지 않습니다) 그래서 당신이 아이들을 통해 갈 필요가 있다는 것입니다 JSFiddle

http://jsfiddle.net/haehn/qxMtk/

를 확인하십시오. 각 X.volume에는 X, Y, Z 슬라이스 인 3 개의 하위 0,1,2가 있습니다.

또한 어린이가 액세스 할 수 있으려면 먼저 onShowtime 또는 그 이후의 항목을 처리해야하므로 볼륨을 생성해야합니다 (구문 분석 중에 발생하는 부분은 r.render()입니다).

1

1) 방금 코드를 시도했는데 거의 완벽하게 작동합니다. (불행히도 onKey 이벤트는 JSFiddle에서 작동하지 않으므로 바이올린을 게시 할 수 없습니다.)

방금 ​​volume.modified() 라인을 추가하여 X.event.ModifiedEvent을 발사하고 슬라이스와 볼륨 렌더링 간의 전환이 올바르게 이루어 지도록하십시오.

function vRender() { 

    if (vr) { 

     volume.volumeRendering = true; 
     volume.opacity = 0.15; 
     **volume.modified();** 
     r.render(); 
    } 
    } 


    r.interactor.onKey = function(event) { 

    if (event.keyCode == 86) { 
     vr = true; 
     vRender(); 
    } 
    };