姜麗梅,張榮華,劉 麗
(華北電力大學(保定) 計算機系,河北 保定 071003)
2006年3月,美國卡內基·梅隆大學計算機科學系主任周以真(Jeannette M Wing)教授在美國計算機權威期刊Communications of the ACM定義了計算思維(computational thinking):計算思維是運用計算機科學的基礎概念進行問題求解、系統(tǒng)設計和理解人類行為,它涵蓋計算機科學之廣度的一系列思維活動[1]。隨著計算機技術的發(fā)展和應用領域的擴大,計算思維的重要性日益明顯,計算思維能力培養(yǎng)也成為當前各階段教育的能力導向之一。計算思維作為一種與計算機及其特有問題的求解緊密相關的思維形式,人們根據(jù)自己工作和生活的需要,在不同的層面上利用這種思維方法去解決問題[2]。經過近十年的教學研究和實踐,這一先進的教學理念已被相當多的人接受,得到國內眾多知名院校的支持。國內眾多高校的專家學者都已提出,將計算思維能力培養(yǎng)作為計算機基礎課程的改革方向,這對于提升大學生科學思維能力,培養(yǎng)創(chuàng)新人才具有重大意義[3]。
計算機圖形學作為高等院校計算機核心課程之一,與計算思維有著天然的聯(lián)系。以計算思維為核心的教學模式不應僅著眼于“知識”即事實的學習,更強調用計算思維進行引領,更多地訓練學生的思想、方法、意識和能力。如何以計算機圖形學課程為載體培養(yǎng)計算思維能力,引導學生學習并掌握這種思維方法,將其有效地用于問題求解、系統(tǒng)設計以及人類行為理解,是當前課程研究的方向之一。
計算機圖形學理論性強、概念抽象性高、實際應用性強,受傳統(tǒng)教學理念的影響,大多數(shù)國內高校的計算機圖形學教學模式并沒有跟上圖形繪制硬件的發(fā)展和時代的要求。傳統(tǒng)的計算機圖形學教學基于固化算法的功能和固定的GPU結合編程語言,偏重于把現(xiàn)有計算機圖形學的原理、方法和基本的圖形繪制算法傳授給學生,學生只能被動地接受已有算法的功能實現(xiàn),忽視了對學生創(chuàng)新意識和創(chuàng)新能力的培養(yǎng)。對于實際操作,又僅僅從上層軟件的操作層面鍛煉學生的應用能力,學生很難從理論深度深入理解上層軟件的工作原理,勢必造成學生在學習計算機圖形學原理和知識時只知其“然”而不知其“所以然”的局面,違背了當今本科教育全面發(fā)展的培養(yǎng)目標。尤其是對于計算機專業(yè)的學生,除了需要系統(tǒng)完善的知識,理解并掌握計算機圖形學的基本概念、理論和算法,更需要加強系統(tǒng)認知能力、算法分析能力、計算思維能力、程序設計能力的培養(yǎng)。
過去十幾年中,GPU得到了迅速發(fā)展,尤其是可編程GPU及眾多高級著色語言的出現(xiàn),使得傳統(tǒng)計算機圖形學教學模式的缺陷日漸凸顯。功能固定的GPU雖然圖形繪制性能和速度較高,但是應用程序編程人員并不能控制計算機內部圖形生成過程,進一步限制了對學生探索知識能力和創(chuàng)新意識的培養(yǎng)。對于基于可編程GPU的圖形繪制應用程序來說(以OpenGL應用程序為例),所有的繪制都是通過可編程GPU的頂點著色器、片元著色器以及其他著色器來控制的,因此新的可編程結構為三維圖形應用程序開發(fā)人員提供了極大的靈活性,也對高等學校計算機圖形學課程的教育教學提出了更高的要求[4]。
計算機圖形學是研究如何利用計算機生成、處理和顯示圖形的一門學科,包括圖形描述、圖形生成、圖形變換、圖形存儲、圖形輸出。計算機圖形學涉及范圍非常廣泛,不僅涉及計算機的各個學科,還涉及線性代數(shù)、計算幾何、機械設計、光學、物理學、工程制圖等多個專業(yè)和學科。需要認識到,計算機圖形學中蘊含著計算思維的概念,而如何構建能夠體現(xiàn)計算機圖形學核心思想和方法的教學內容,突出計算思維方法的訓練,在掌握課程知識的基礎上,引導學生學習、掌握這種思維方法,有效地將其用于計算機問題以及非計算機問題甚至跨學科問題的求解,是當前課程的改革方向,需要從教學理念、教學內容、教學方法等方面采取有效措施以提升教學效果。
教育部大學計算機課程教學指導委員會構建了計算思維的表述體系:計算、抽象、自動化、設計、通信、協(xié)作、記憶和評估。在計算機圖形學課程中,“計算”與“自動化”這兩個概念又是關注的重點,這也是由課程內容所決定的[3]。應當認識到:計算機圖形學中滲透著計算思維,應當啟發(fā)學生使用計算思維解決各種計算機圖形學相關的實際問題。
(1)計算機圖形學研究如何在計算機上生成、處理和顯示圖形,模擬畫家繪畫、設計師設計等過程并展現(xiàn)他們的思維方式,有助于深刻理解從問題分析、系統(tǒng)設計、問題解決的過程[5]。
(2)圖形的幾何變換、光柵化、隱藏面消除等圖形學的具體求解問題,需要利用計算機科學的基本概念進行求解,也體現(xiàn)了計算思維方法,二者存在聯(lián)系和區(qū)別。
(3)計算機圖形系統(tǒng)由軟件系統(tǒng)和硬件系統(tǒng)組成,軟硬件系統(tǒng)開發(fā)和設計是計算機類專業(yè)學生的重要技能。
傳統(tǒng)的計算機圖形學教學基于固化算法的功能固定的GPU結合一種或幾種編程語言介紹計算機圖形學的基本原理、方法和技術,而該課程內容多、理論難度大、實踐性強,導致學習難度增加、學生學習積極性不高等問題,陳舊的教學內容還限制學生獲取具有較強應用背景和前沿性的技術知識,勢必會限制學生的創(chuàng)新意識和探索能力,也不利于學生實踐能力和創(chuàng)新能力的培養(yǎng)。
結合多年計算機圖形學課程的教學實踐和當前計算機圖形學技術的發(fā)展,提出的對教學內容的調整方案主要包括以下內容。
1)以計算機圖形學相關原理、方法和技術為主要內容,以可編程GPU的圖形繪制流水線為主線安排教學內容,見圖1[4]。
圖1 圖形繪制流水線
強調以流水線形式描述圖形數(shù)據(jù)到圖形顯示的繪制過程,更能突出計算機圖形學中蘊含的計算思維。
(1)頂點處理模塊的主要功能是通過執(zhí)行頂點著色器程序(vertex shader)確定頂點的位置坐標以及程序員希望的其他輸出數(shù)據(jù),比如頂點的法向量和紋理坐標。隨著現(xiàn)代可編程GPU的發(fā)展,頂點著色器變成了更加通用的編程單元,可以處理任何與頂點相關的數(shù)據(jù),比如編寫頂點著色器程序生成對象的動畫效果。在圖形生成過程中,對象頂點經過在不同坐標系之間的變換,每一次變換可以用一個矩陣來表示,對象頂點在坐標系的多次變換可以表示為矩陣的相乘或者級聯(lián),最終表示為一個復合矩陣(計算、設計、自動化)。
(2)裁剪之前將頂點組裝成像線段和多邊形這樣的圖元,然后裁減掉裁剪體外部的對象,保留裁剪體內部的對象(計算、自動化、抽象、記憶、評估)。
(3)光柵化模塊將裁剪模塊得到的圖元進一步處理成幀緩存中的片元(計算、記憶、自動化、抽象、設計、評估)。
(4)片元處理模塊主要執(zhí)行片元著色器程序(fragment shader),利用光柵化模塊生成的片元來更新幀緩存中的像素,確定三維圖形每個片元的顏色和可見性。每個片元的顏色可以由程序指定,也可以利用基于物理的真實感光照模型來計算,這樣的光照模型考慮了對象的表面屬性和場景中的特定光源(計算、評估、設計)。
目前,現(xiàn)代可編程GPU已經演化成一種具有統(tǒng)一渲染架構的并行流水線結構,圖1所示的流水線上各個模塊之間是并行執(zhí)行的,并且流水線上著色器本身也是基于頂點或片元數(shù)據(jù)并發(fā)執(zhí)行的(協(xié)調)。
(5)利用圖形繪制流水線,不僅在各個模塊內容的學習中能認識到計算機思維的抽象、自動化等概念,而且對圖形生成的流程有整體認識。在計算機圖形系統(tǒng)構成、輸入輸出設備、圖形軟件教學過程中,可體現(xiàn)計算思維中的記憶、通信、設計思維訓練,認識由簡單問題到復雜問題、復雜問題分解為簡單問題的過程。
2)根據(jù)學生的實際學習情況,壓縮部分理論陳舊的知識,及時把最新技術和最新研究成果引入理論教學中,開闊學生們的視野。
在掌握基本原理和基本概念的同時,結合圖形繪制硬件的發(fā)展,增加利用高級著色語言控制可編程GPU進行圖形繪制的相關原理、方法和技術這部分課程內容,增加WebGL和Three.js等第三方庫的教學實踐。
3)引入計算機圖形應用案例,鼓勵和引導學生圍繞計算機圖形學相關內容,靈活選擇切入點設計并開發(fā)圖形應用,熟練掌握計算機圖形學基礎知識,提高明確問題、分析問題、解決問題的能力,將實際應用中蘊含的計算思維與計算機圖形學中的計算思維聯(lián)系起來,實現(xiàn)對學生計算思維能力和創(chuàng)新能力的培養(yǎng)。
總之,教學內容的調整不僅符合學校“厚基礎,強能力,重實踐”的原則,也有助于培養(yǎng)學生基于圖形繪制的計算思維能力。計算思維的核心概念是經過高度概括和理論總結的,還不能成為直接的教學材料,其培養(yǎng)要滲透在傳授學科知識、訓練應用能力的過程中[6]。通過計算機圖形學課程的學習,逐步提煉計算思維的具體表現(xiàn)形式與過程,引導學生在不同的應用情景中梳理運用計算思維解決問題的全過程,最終將利用信息技術解決問題的過程遷移到學習和生活的其他相關問題解決過程中。
計算機圖形學的內容抽象性很高,存在一些晦澀難懂的概念。同時,計算機圖形學具有很強的應用背景,但實踐難度大。為了取得良好的教學效果,改進傳統(tǒng)的以講授為主的教學方式,采用多種教學手段相結合,成為計算機圖形學教學的最佳選擇。
(1)采用“所見即所得”的方式,包括開發(fā)界面直觀友好的教學演示軟件,選取有指導意義和教學意義的代表性的案例,通過教學演示軟件形象地展示復雜圖形生成過程,將計算機圖形學抽象的思維過程形象地表達出來。
(2)將研究性教學引入到教學過程中,強化學生發(fā)現(xiàn)問題、分析問題和解決問題的能力。
(3)改變傳統(tǒng)的教師講授、學生參與的教學模式,研究雙主互動教學模式,加強學生在教學過程中的主體地位,提高學生學習的積極性和主動性。
(4)以課程實驗為契機,讓學生自主設計并實現(xiàn)三維場景繪制,設置OpenGL基本圖形繪制、3D建模和真實感圖形繪制綜合實驗,調動學生思考和探究的積極性。計算思維遠不止計算機程序設計,還要求能夠根據(jù)待求解問題在抽象的多個層次上思考、設計和實現(xiàn),因此,鼓勵學生自主完成游戲開發(fā)、移動圖形計算等新形式題目,培養(yǎng)學生的項目設計、實現(xiàn)和實施的能力,從而加強計算思維能力培養(yǎng)。
計算思維能力培養(yǎng)以計算機學科為代表,是近年來計算機相關課程的教學研究熱點。計算機圖形學教學改革以計算思維能力培養(yǎng)為導向,對于提高學生的綜合能力具有重要意義。特別是結合當前計算機軟硬件技術的新發(fā)展,基于可編程GPU和著色語言介紹計算機圖形學的知識,是培養(yǎng)和促進學生計算思維能力的有效手段之一,能夠加深學生對本學科計算特征和思維方式的認識,進一步增強學生運用計算思維分析問題和解決問題能力。反過來,學生計算思維能力的提升有助于更好地理解計算機圖形學的核心內容,取得更佳學習效果。