国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)

這篇具有很好參考價(jià)值的文章主要介紹了計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

OpenGL作為一種圖形與硬件的接口,與其他圖形程序開發(fā)工具相比較,它提供了眾多圖形函數(shù),直觀的編程環(huán)境簡化了三維圖形的繪制過程,使用OpenGL搭建一個(gè)三維場景,能夠通過輸入設(shè)備與場景內(nèi)物體交互。
計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)
豪華單間

配置環(huán)境:vs22+freeglut庫

1.繪制墻體使其成為封閉空間,在封閉空間內(nèi)完成場景的布置

//空間基本架構(gòu)
void drawWall()
{
    glColor3f(0.47, 0.54, 0.60);//rgb顏色可調(diào)
    GLfloat matWall[] = { 0.37, 0.83, 0.98};
	GLfloat matBlack[] = { 0, 0, 0, 1 };
	GLfloat matWhite[] = { 1, 1, 1, 1 };
	GLfloat matShininess[] = { 40 };
	glMaterialfv(GL_FRONT, GL_AMBIENT, matWall);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, matWall);
	glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
	glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
	glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
    // 左邊
    drawQuads(-10, 10, -20,
        -10, 10, 0,
        -10, -10, 0,
        -10, -10, -20);
    // 右邊
    drawQuads(10, -10, -20,
        10, -10, 0,
        10, 10, 0,
        10, 10, -20);
    // back
    drawQuads(10, 10, -20,
        -10, 10, -20,
        -10, -10, -20,
        10, -10, -20);
    // 天花板
    drawQuads(10, 10, -20,
        10, 10, 0,
        -10, 10, 0,
        -10, 10, -20);
    // 地板
    glColor3f(0.75, 0.75, 0.75);
    drawQuads(-10, -10, -20,
        -10, -10, 0,
        10, -10, 0,
        10, -10, -20);
}

glMaterialfv ()函數(shù)指定照明模型的材料參數(shù)。
計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)
2.繪制一張床將其放在角落(左)

void drawBed()
{
    glColor3f(1, 0.8, 0.5);
    glMaterialfv(GL_FRONT, GL_AMBIENT, matBrown);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, matBrown);
    glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
    glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
    glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
    // 床頭
    glPushMatrix();
    glTranslatef(-9.5, -6, -16);
    glScalef(1, 8, 8);
    glutSolidCube(1);
    glPopMatrix();
    // 床尾
    glPushMatrix();
    glTranslatef(4.5, -8.5, -16);
    glScalef(1, 3, 8);
    glutSolidCube(1);
    glPopMatrix();
    //床板
    glPushMatrix();
    glTranslatef(-2, -7, -16);
    glScalef(14, 1, 8);
    glutSolidCube(1);
    glPopMatrix();
    //床墊
    glColor3f(0.6, 0.97, 0.6);
    glMaterialfv(GL_FRONT, GL_AMBIENT, matGreen);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, matGreen);
    glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
    glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
    glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
    glPushMatrix();
    glTranslatef(-2, -6, -16);
    glScalef(14, 1, 8);
    glutSolidCube(1);
    glPopMatrix();
}

效果圖如下:
計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)
3.房間的一些基本配置

void drawDesk()
{
    glColor3f(1, 0.8, 0.5);
    glMaterialfv(GL_FRONT, GL_AMBIENT, matBrown);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, matBrown);
    glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
    glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
    glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);
	//書桌
    glPushMatrix();
    glTranslatef(9, -4, -10);
    glScalef(4, 0.5, 20);
    glutSolidCube(1);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(9.75, -7, -10);
    glScalef(0.5, 6, 20);
    glutSolidCube(1);
    glPopMatrix();
	//床頭柜
	glPushMatrix();
    glTranslatef(-8, -8, -10);
    glScalef(4, 4, 4);
    glutSolidCube(1);
    glPopMatrix();
}

這桌子建議改成實(shí)體的bushi
計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)再添置一個(gè)茶壺 bushi

void drawTeapot()
{
    glColor3f(0.80,0.71,0.34);
    glMaterialfv(GL_FRONT, GL_AMBIENT, matBrown);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, matBrown);
    glMaterialfv(GL_FRONT, GL_SPECULAR, matWhite);
    glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
    glMaterialfv(GL_FRONT, GL_EMISSION, matBlack);

    glPushMatrix();
    glTranslatef(-8, -5.5, -10);
    glRotatef(-100, 0, 1, 0);
    glutSolidTeapot(0.8);
    glPopMatrix();
}

計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)
場景先寫到這兒吧,其他物品隨意可加的,下一篇寫畫安卓精靈求個(gè)關(guān)注
完整源碼評(píng)論區(qū)留郵箱文章來源地址http://www.zghlxwxcb.cn/news/detail-510348.html

到了這里,關(guān)于計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場景(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【計(jì)算機(jī)圖形學(xué)】【實(shí)驗(yàn)報(bào)告】太陽系繪制、B樣條曲線繪制(附代碼)

    【計(jì)算機(jī)圖形學(xué)】【實(shí)驗(yàn)報(bào)告】太陽系繪制、B樣條曲線繪制(附代碼)

    實(shí) 驗(yàn) 報(bào) 告 一、實(shí)驗(yàn)?zāi)康?掌握三維圖形的顯示原理和方法,掌握三維觀察的原理和方法; 掌握OpenGL中矩陣堆棧函數(shù)的使用,會(huì)使用堆棧函數(shù)進(jìn)行復(fù)雜場景的組裝。 掌握OpenGL中三維觀察變換常用的函數(shù)的使用方法,了解三維模型的貼圖方法; 掌握自由曲線的生成方法,熟練

    2024年02月10日
    瀏覽(31)
  • 計(jì)算機(jī)圖形學(xué)(三) -- 3D 變換

    計(jì)算機(jī)圖形學(xué)(三) -- 3D 變換

    同樣引入齊次坐標(biāo): 3D 點(diǎn) = ( x , y , z , 1 ) T (x, y, z, 1)^T ( x , y , z , 1 ) T 3D 向量 = ( x , y , z , 0 ) T (x, y, z, 0)^T ( x , y , z , 0 ) T 通常, ( x , y , z , w ) (x, y, z, w) ( x , y , z , w ) (w != 0) 表示一個(gè)坐標(biāo)為 ( x / w , y / w , z / w ) (x/w, y/w, z/w) ( x / w , y / w , z / w ) 的 3D 點(diǎn) 用一個(gè) 4x4 的矩陣來表示

    2024年02月08日
    瀏覽(27)
  • 計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

    計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

    一、實(shí)現(xiàn)方案 ? ? ? ?貝塞爾曲線原理:貝塞爾曲線是計(jì)算機(jī)圖形圖像造型的基本工具,是圖形造型運(yùn)用得最多的基本線條之一。它通過控制曲線上的四個(gè)點(diǎn)(起始點(diǎn)、終止點(diǎn)以及兩個(gè)相互分離的中間點(diǎn))來創(chuàng)造、編輯圖形。其中起重要作用的是位于曲線中央的控制線。這條

    2024年02月11日
    瀏覽(25)
  • 計(jì)算機(jī)圖形學(xué)中的曲線問題——拉格朗日插值曲線繪制實(shí)踐

    計(jì)算機(jī)圖形學(xué)中的曲線問題——拉格朗日插值曲線繪制實(shí)踐

    限于篇幅,我們將在這篇文章中介紹拉格朗日插值曲線繪制實(shí)踐,主文章鏈接: GGN_2015 計(jì)算機(jī)圖形學(xué)中的曲線問題 在主文章中我們已經(jīng)介紹了拉格朗日插值函數(shù)的繪制方法。給定一個(gè)函數(shù)必須通過的點(diǎn)的集合,保證任意兩點(diǎn) x x x 指不同,我們就能構(gòu)造出一條拉格朗日插值函

    2024年02月14日
    瀏覽(29)
  • 【計(jì)算機(jī)圖形學(xué) 】掃描線多邊形填充算法 | OpenGL+鼠標(biāo)交互

    【計(jì)算機(jī)圖形學(xué) 】掃描線多邊形填充算法 | OpenGL+鼠標(biāo)交互

    傳送門 實(shí)現(xiàn)多邊形掃描線填充算法,并和鼠標(biāo)進(jìn)行交互。 具體原理略過,會(huì)貼上完整代碼,可直接運(yùn)行。 環(huán)境: vs2019,OpenGL的庫(可以搜索如何用vs使用OpenGL的庫,可以使用vs自帶的插件或者其他方法,很方便) 要點(diǎn): 1.NET和AET的創(chuàng)建,改動(dòng) 2.改變鼠標(biāo)點(diǎn)擊和鼠標(biāo)拖拽的響應(yīng)

    2023年04月08日
    瀏覽(100)
  • 計(jì)算機(jī)圖形學(xué)的革命:從2D到3D

    計(jì)算機(jī)圖形學(xué)是一門研究如何在計(jì)算機(jī)屏幕上生成圖像的學(xué)科。從其出現(xiàn)以來,計(jì)算機(jī)圖形學(xué)經(jīng)歷了兩次革命性的變革:從2D到3D,以及從矢量圖形到位置 Independent Bitmap Images(Pixels)。這篇文章將深入探討從2D到3D的革命,揭示其背后的核心概念、算法原理、數(shù)學(xué)模型以及代碼實(shí)

    2024年02月19日
    瀏覽(32)
  • 計(jì)算機(jī)圖形學(xué)基礎(chǔ):2D/3D坐標(biāo)變換(Transformation)

    計(jì)算機(jī)圖形學(xué)基礎(chǔ):2D/3D坐標(biāo)變換(Transformation)

    本文講解了2D變換和3D變換式如何用矩陣表示的 如何將線性和非線性變換進(jìn)行一個(gè)統(tǒng)一表示形式 三維物體在二維空間上的映射 表示向量添加了一維,分別表示單位距離和平移不變形的方向 旋轉(zhuǎn)默認(rèn)都是以(0, 0)為中心

    2023年04月08日
    瀏覽(24)
  • 計(jì)算機(jī)圖形學(xué)環(huán)境配置java3D

    計(jì)算機(jī)圖形學(xué)環(huán)境配置java3D

    java3Dwindows64位下載 這個(gè)是默認(rèn)到下圖路徑中:(記住這個(gè)路徑,待會(huì)要導(dǎo)入jar包) 選擇這個(gè): 所以我把jdk改成了這個(gè)1.8版本就可以了: 將java3D目錄下面的bin目錄中的dll文件拷貝到idea里配置的jdk路徑的bin目錄下: idea里配置的jdk路徑的bin目錄: 把這個(gè)文件拷貝過去: 打開

    2024年02月09日
    瀏覽(25)
  • 計(jì)算機(jī)視覺 圖像形成 幾何圖形和變換 3D到2D投影

    ????????現(xiàn)在我們知道如何表示2D和3D幾何圖元以及如何在空間上轉(zhuǎn)換它們,我們需要指定如何將 3D圖元投影到圖像平面上。 我們可以使用線性3D到2D投影矩陣來做到這一點(diǎn)。最簡單的模型是正交法,它不需要除法就可以得到最終的(不均勻的)結(jié)果。更常用的模型是透視,

    2023年04月08日
    瀏覽(100)
  • 計(jì)算機(jī)圖形學(xué)頭歌實(shí)訓(xùn)平臺(tái)答案——CG1-v2.0-直線繪制

    計(jì)算機(jī)圖形學(xué)頭歌實(shí)訓(xùn)平臺(tái)答案——CG1-v2.0-直線繪制

    1.本關(guān)任務(wù) (1)根據(jù)直線DDA算法補(bǔ)全line函數(shù),其中直線斜率0k1; (2)當(dāng)直線方程恰好經(jīng)過P(x,y)和T(x,y+1)的中點(diǎn)M時(shí),統(tǒng)一選取直線上方的T點(diǎn)為顯示的像素點(diǎn)。 2.輸入 (1)直線兩端點(diǎn)坐標(biāo):(13, 20)和(180,140); (2)直線顏色為白色。 3.輸出 程序運(yùn)行結(jié)果為一條直線,具體結(jié)果如下圖所示:

    2024年02月06日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包