Three.js 教程: 相機(jī)camera

什么是照相機(jī)?

我們使用Three.js創(chuàng)建的場景是三維的放航,而通常情況下顯示屏是二維的盗飒,那么三維的場景如何顯示到二維的顯示屏上呢嚷量?照相機(jī)就是這樣一個抽象,它定義了三維空間到二維屏幕的投影方式逆趣,用“照相機(jī)”這樣一個類比蝶溶,可以使我們直觀地理解這一投影方式。
而針對投影方式的不同宣渗,照相機(jī)又分為THREE.PerspectiveCamera(透視投影照相機(jī)) 和 THREE.OrthographicCamera(正交投影照相機(jī))抖所。

常用兩種相機(jī)

  • 1.OrthographicCamera 正交投影相機(jī)(平視相機(jī))
  • 2.PerspectiveCamera 透視相機(jī)(更像人眼)

舉個簡單的例子來說明正交投影(平視)與透視投影照相機(jī)的區(qū)別。
使用透視投影照相機(jī)獲得的結(jié)果是類似人眼在真實(shí)世界中看到的有“近大遠(yuǎn)小”的效果痕囱;
而使用正交投影照相機(jī)獲得的結(jié)果就像我們在數(shù)學(xué)幾何學(xué)課上老師教我們畫的效果田轧,對于在三維空間內(nèi)平行的線,投影到二維空間中也一定是平行的

那么鞍恢,你的程序需要正交投影還是透視投影的照相機(jī)呢?
一般說來傻粘,對于制圖、建模軟件通常使用正交投影帮掉,這樣不會因?yàn)橥队岸淖兾矬w比例弦悉;
而對于其他大多數(shù)應(yīng)用,通常使用透視投影蟆炊,因?yàn)檫@更接近人眼的觀察效果稽莉。當(dāng)然,照相機(jī)的選擇并沒有對錯之分涩搓,你可以更具應(yīng)用的特性污秆,選擇一個效果更佳的照相機(jī)。
詳細(xì)案例差別參考:https://threejs.org/examples/#webgl_camera

兩種相機(jī)的新建方式有所不同昧甘,透視相機(jī)用的而更多一些

/* 四個參數(shù)分別表示:多少度視角良拼,相機(jī)的寬高比,最近距離疾层,最遠(yuǎn)可視距離*/
new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,1,1000);

常用的好用的相機(jī)控制器
OrbitControls.js将饺,效果就是可以通過鼠標(biāo)來控制相機(jī)視野

完整案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="vendor/three.min.js"></script>
    <script type="text/javascript" src="vendor/jquery.min.js"></script>
    <!-- 常用相機(jī)控制器贡避,依賴文件目錄 three.js\examples\js\controls -->
    <script type="text/javascript" src="vendor/OrbitControls.js"></script>
</head>
<body >
<script>
    /**
     * 常用兩種相機(jī)
     * 1.OrthographicCamera  正交投影相機(jī)(平視相機(jī))
     * 2.PerspectiveCamera  透視相機(jī)(人眼)
     */

    $(function () {
        var scene=new THREE.Scene();

        var geomtry= new THREE.BoxGeometry(100,100,100);    //新建盒子模型
        var material=new THREE.MeshLambertMaterial({color:0xff0000});   //材質(zhì)mtl
        var mesh=new THREE.Mesh(geomtry,material);
        scene.add(mesh);    //場景中添加模型

        var light= new THREE.PointLight(0xffffff);
        light.position.set(300,400,200);
        scene.add(light);   //場景中添加點(diǎn)光源

        //加入環(huán)境光使環(huán)境亮一點(diǎn)
        scene.add(new THREE.AmbientLight(0x333333));

        var camera=new THREE.PerspectiveCamera(40,window.innerWidth/window.innerHeight,1,1000);
        camera.position.set(200,200,200);   //設(shè)置相機(jī)位置
        // camera.lookAt(scene.position);
        camera.lookAt(0,0,0);

        var renderer=new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth,window.innerHeight);
        document.body.appendChild(renderer.domElement);

        render();
        function render() {
            // requestAnimationFrame(render);
            // camera.position.x+=0.1;
            // camera.position.y+=0.1;
            // camera.position.z+=0.1;
            renderer.render(scene,camera);
        }

        //相機(jī)控制器
        var controls=new THREE.OrbitControls(camera);
        controls.addEventListener('change',render);
    });
</script>
</body>
</html>

完整代碼:github地址 歡迎star

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痛黎,一起剝皮案震驚了整個濱河市予弧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌湖饱,老刑警劉巖掖蛤,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異井厌,居然都是意外死亡蚓庭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門仅仆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來器赞,“玉大人,你說我怎么就攤上這事墓拜「酃瘢” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵咳榜,是天一觀的道長夏醉。 經(jīng)常有香客問我,道長涌韩,這世上最難降的妖魔是什么畔柔? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮臣樱,結(jié)果婚禮上靶擦,老公的妹妹穿的比我還像新娘。我一直安慰自己雇毫,他們只是感情好奢啥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘴拢,像睡著了一般桩盲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上席吴,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天赌结,我揣著相機(jī)與錄音,去河邊找鬼孝冒。 笑死柬姚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庄涡。 我是一名探鬼主播量承,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撕捍?” 一聲冷哼從身側(cè)響起拿穴,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忧风,沒想到半個月后默色,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狮腿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年腿宰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缘厢。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡吃度,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贴硫,到底是詐尸還是另有隱情规肴,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布夜畴,位于F島的核電站拖刃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贪绘。R本人自食惡果不足惜兑牡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望税灌。 院中可真熱鬧均函,春花似錦、人聲如沸菱涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘秆。三九已至如迟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攻走,已是汗流浹背殷勘。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昔搂,地道東北人玲销。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像摘符,于是被迫代替她去往敵國和親贤斜。 傳聞我的和親對象是個殘疾皇子策吠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本文主要是講解 Three.js 的相關(guān)概念,幫助大家對 Three.js 以及相關(guān)知識形成比較完整的理解瘩绒。今年來...
    Simon王小白閱讀 8,450評論 2 9
  • 今天的主題是three.js中用于觀察三維空間的攝像機(jī)猴抹。 1.認(rèn)識camera 圖形學(xué)中的攝像機(jī)定義了三維空間到二...
    sakatayui醬閱讀 5,896評論 0 1
  • [中文摘要]透視學(xué)的出現(xiàn)極大地促進(jìn)了文藝復(fù)興藝術(shù)走向巔峰,被引入中國后草讶,為了適應(yīng)西方的透視概念將其命名為“焦點(diǎn)透視...
    嚴(yán)支勝閱讀 2,759評論 0 6
  • 1 前言 OpenGL渲染3D模型離不開空間幾何的數(shù)學(xué)理論知識,而本篇文章的目的就是對空間幾何進(jìn)行簡單的介紹炉菲,并對...
    RichardJieChen閱讀 6,991評論 1 11
  • 續(xù)上次的部分堕战。 從數(shù)據(jù)中學(xué)得模型的過程稱為“學(xué)習(xí)”(learning)或“訓(xùn)練”(training),這個過...
    柏舉閱讀 466評論 0 1