Three.js: μ°½ 크기 μ‘°μ • 및 μ’…νš‘λΉ„

에 λ§Œλ“  2010λ…„ 12μ›” 27일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: mrdoob/three.js

λ‹€μŒμ€ 또 ν•˜λ‚˜μž…λ‹ˆλ‹€.
μ°½ 크기 쑰정을 μ²˜λ¦¬ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€.

window.addEventListener( 'resize', onWindowResize, false );
function onWindowResize(){
    renderer.setSize( window.innerWidth, window.innerHeight );
}

이 "λŒ€λΆ€λΆ„"μž‘λ™ν•˜μ§€λ§Œ μž…μž 색상이 검은 μƒ‰μœΌλ‘œ μž¬μ„€μ •λ˜κ³  μ’…νš‘λΉ„κ°€ μ—…λ°μ΄νŠΈλ˜μ§€ μ•Šμ•„ κ³„λž€μ˜ 곡이 λ³€ν˜•λ©λ‹ˆλ‹€.이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법을 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

감사 :-)

Question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ˜ν•œ 카메라λ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆλ‹€.

window.addEventListener( 'resize', onWindowResize, false );

function onWindowResize(){

    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();

    renderer.setSize( window.innerWidth, window.innerHeight );

}

λͺ¨λ“  13 λŒ“κΈ€

λ˜ν•œ 카메라λ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆλ‹€.

window.addEventListener( 'resize', onWindowResize, false );

function onWindowResize(){

    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();

    renderer.setSize( window.innerWidth, window.innerHeight );

}

μ°½ 크기가 μ‘°μ •λ˜κ±°λ‚˜ νŽ˜μ΄μ§€ λ‚΄μ˜ λ‹€λ₯Έ μš”μ†Œκ°€ 숨겨 질 λ•Œ 크기가 μ‘°μ •λ˜λŠ” 동적 ν¬κΈ°κ°€μžˆλŠ” "div"κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 "div"μ»¨ν…Œμ΄λ„ˆμ˜ 크기가 μ‘°μ •λ˜λ©΄ divλ₯Ό μ™„μ „νžˆ μ±„μš°λ €λ©΄ μΊ”λ²„μŠ€κ°€ ν•„μš”ν•©λ‹ˆλ‹€. $ ( '# center-pane'). width () 및 .height ()λ₯Ό μ‚¬μš©ν•˜μ—¬ λ„€νŠΈμ›Œν¬λ₯Ό μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€.이 λ„€νŠΈμ›Œν¬λŠ” "center"divλ₯Ό μ›ν•˜λŠ” 치수둜 μ˜¬λ°”λ₯΄κ²Œ μ±„μš°μ§€ 만 크기λ₯Ό μ‘°μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

이둠적으둜 λ™μΌν•œ κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ 두 가지 크기 μ‘°μ • μ‹œλ‚˜λ¦¬μ˜€λ₯Ό 처리 ν•  수 β€‹β€‹μžˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜κ°€ 호좜 될 λ•Œ camera.updateProjectionMatrix ()에 λ¬Έμ œκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ 내에 alert ()κ°€ 있고 크기 μ‘°μ •μ‹œ μ‹€ν–‰λ˜λ―€λ‘œ 카메라와 λ Œλ”λŸ¬ 만 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μΊ”λ²„μŠ€ λ‚΄μ˜ λͺ¨λ“  개체λ₯Ό 클릭 ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€. κΈ°λŠ₯이 μžˆμ§€λ§Œ μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆλ‹€. λ§žμŠ΅λ‹ˆκΉŒ?
CombinedCameraλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. (λ‚˜λŠ” 그것에 λŒ€ν•œ μ–΄λ–€ λ¬Έμ„œλ„ 찾을 μˆ˜μ—†κ³  단지 예일 뿐이닀);

이것은 λ‚΄κ°€ μ‚¬μš©ν•˜κ³ μžˆλŠ” λ ˆμ΄μ•„μ›ƒμž…λ‹ˆλ‹€. http://layout.jquery-dev.net/demos/simple.html
크기 μ‘°μ • λ²„νŠΌμ—†μ΄ 'ui-center-pane'을 λ™μ μœΌλ‘œ μ±„μš°λ €λ©΄ 크기 μ‘°μ • κΈ°λŠ₯이 ν•„μš”ν•©λ‹ˆλ‹€.

감사,
브렌트

죄솑 ν•©λ‹ˆλ‹€λ§Œ, λ¬Έμ œκ°€ 무엇인지 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€ 만, κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

μ•Œμ•˜μ–΄ λ―Έμ•ˆν•΄.

  1. CombinedCamera λ¬Έμ„œμ— λŒ€ν•΄ μ„€λͺ…ν•˜κ±°λ‚˜ 링크 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?
  2. 크기λ₯Ό μ‘°μ •ν•  λ•Œ "updateProjectionMatrix () λ©”μ„œλ“œκ°€ μ—†μŒ"μ΄λΌλŠ” 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.
  3. 크기λ₯Ό μ‘°μ •ν•  λ•Œ μ–΄λ–»κ²Œ, 무엇을 μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆκΉŒ? (λ˜ν•œ 이벀트 처리λ₯Ό μœ„ν•΄ ꡐ차 광선에 μ–΄λ–€ 영ν–₯을 λ―ΈμΉ©λ‹ˆ 까)

브렌트

1 CombinedCamera λ¬Έμ„œμ— λŒ€ν•΄ μ„€λͺ…ν•˜κ±°λ‚˜ 링크 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

그것이 μœ μΌν•œ κ²ƒμž…λ‹ˆλ‹€.
https://github.com/mrdoob/three.js/blob/master/src/extras/cameras/CombinedCamera.js

2 크기 μ‘°μ •μ‹œ "updateProjectionMatrix () λ©”μ„œλ“œκ°€ μ—†μŒ"μ΄λΌλŠ” 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

http://layout.jquery-dev.net/demos/simple.html 둜 μ΄λ™ν•˜μ—¬ νŽ˜μ΄μ§€ 크기λ₯Ό μ‘°μ •ν•  λ•Œ μ΄λŸ¬ν•œ 였λ₯˜κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Uncaught TypeError: Object #<Object> has no method 'getCookie' 만 ν‘œμ‹œλ©λ‹ˆλ‹€.

3 크기 μ‘°μ •μ‹œ μ–΄λ–»κ²Œ, 무엇을 μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆκΉŒ? (λ˜ν•œ 이벀트 처리λ₯Ό μœ„ν•΄ ꡐ차 광선에 μ–΄λ–€ 영ν–₯을 λ―ΈμΉ©λ‹ˆ 까)

카메라 μ’…νš‘λΉ„ (λ„ˆλΉ„ / 높이)λ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆλ‹€. 그리고 λ Œλ”λŸ¬μ— μƒˆλ‘œμš΄ 크기λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. 크기 쑰정이 광선에 λ―ΈμΉ˜λŠ” 영ν–₯에 따라 # 988을 μ½μ–΄λ³΄μ‹­μ‹œμ˜€.

camera.aspect = λ„ˆλΉ„ / 높이; 잘 μž‘λ™ν•˜μ§€λ§Œ camera.updateProjectionMatrix ()μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. λ‚΄ λ ˆμ΄μ•„μ›ƒκ³Ό 관련이 μ—†μ–΄μ•Όν•©λ‹ˆλ‹€. onWindowResize () ν•¨μˆ˜ 만 μžˆμœΌλ©΄λ©λ‹ˆλ‹€.

UI-Layout λ§ν¬λŠ” κ·Έλ“€μ˜ μ˜ˆμ˜€μŠ΅λ‹ˆλ‹€.

μ½”λ“œ λ‚˜ 라이브 링크λ₯Ό 곡유 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? camera μ—λŠ” ν™•μ‹€νžˆ updateProjectionMatrix() λ©”μ„œλ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄ μ €μž₯μ†ŒλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
https://github.com/BioInfoBrent/BIOINFORMATICS
파일:
BIOINFORMATICS / js / networkMain.js

이 ν”„λ‘œμ νŠΈλŠ” ν•™κΈ° μ€‘λ°˜ 재 μž‘μ„± μ€‘μž…λ‹ˆλ‹€. μ›λž˜ ν”„λ‘œμ νŠΈλŠ” ν•˜λ‚˜μ˜ 큰 "SWITCH"μ„±λͺ…μ„œμ— μ˜ν•΄ μ œμ–΄λ˜μ—ˆμœΌλ©°, λ‚˜λŠ” 그것을 μ—†μ• λŠ” 과정에 μžˆμŠ΅λ‹ˆλ‹€.

이번 μ£Ό 말에 μ•„ν‚€ν…μ²˜λ₯Ό μ™„μ„±ν•˜λ©΄ ν”„λ‘œμ νŠΈμ˜ μ‹€μ œ THREE.js μΈ‘λ©΄μ—μ„œ μž‘μ—… ν•  μ‹œκ°„μ„ 많이 확보 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λͺ‡ 가지 질문이 더 있고 ν•˜λ£¨λ‚˜ 이틀 μ•ˆμ— μ§ˆλ¬Έμ„ 더 λͺ…ν™•ν•˜κ²Œ μ§€μ‹œν•˜κ³  μ„€λͺ… ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•„, μ•Œκ² μŠ΅λ‹ˆλ‹€. CombinedCamera 카메라에 updateProjectionMatrix() 이 (κ°€) μ—†μŠ΅λ‹ˆλ‹€.

@ zz85 : cameraO 및 cameraP λͺ¨λ‘μ—μ„œ updateProjectionMatrix() λ₯Ό ν˜ΈμΆœν•˜λŠ” CombinedCamera updateProjectionMatrix() λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜λŠ” 것이 μ’‹μ„κΉŒμš”?

κ°μ‚¬ν•©λ‹ˆλ‹€! λ‚˜λŠ” 이것을 확인할 것이닀. λ‚΄ μ„œλ²„μ— λ‚΄ ν”„λ‘œμ νŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.
μ£Όμ†Œ : http://cas-biodb.cas.unt.edu/bionet/dev.html
-ν˜„μž¬ μƒλ‹¨μ˜ "λ„€νŠΈμ›Œν¬"λ²„νŠΌμ΄ μœ μΌν•œ μž‘λ™ λΆ€λΆ„μž…λ‹ˆλ‹€.

감사!

λ‹€μŒμ€ λ‚˜λ₯Ό μœ„ν•΄ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

camera.aspect = 1;
camera.updateProjectionMatrix ();
renderer.setSize (window.innerWidth, window.innerHeight);

버전 66을 μ‚¬μš©ν•˜κ³  있으며

window.addEventListener( 'resize', onWindowResize, false );

function onWindowResize(){

    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();

    renderer.setSize( window.innerWidth, window.innerHeight );

}

CombinedCamera μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λŒ€μ‹  λ‚˜λŠ” λ‹€μŒκ³Ό 같은 κ²ƒμ„ν•΄μ•Όν–ˆλ‹€.

function onWindowResize(){

    if(camera.inPerspectiveMode){
        camera.cameraP.aspect = window.innerWidth / window.innerHeight;
        camera.cameraP.updateProjectionMatrix();
    }
    else{
        camera.cameraO.left = window.innerWidth / - 2;
        camera.cameraO.right = window.innerWidth / 2;
        camera.cameraO.top = window.innerHeight / 2;
        camera.cameraO.bottom = window.innerHeight / - 2;
        camera.cameraO.updateProjectionMatrix();
    }

    renderer.setSize( window.innerWidth, window.innerHeight );

}

3 μ„¬μœ  λ°˜μ‘μ—μ„œ glft 크기λ₯Ό μ‘°μ •ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰