Thời kỳ 1971-1984 Phân hiệu Đại học Giao thông đường thủy Phân hiệu Đại học Giao thông đường thủy GTĐT được thành lập theo Quyết định số 115/CP của Chính phủ trên cơ sở các ngành Đại học
Trang 1ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG KHU HIỆU BỘ TRƯỜNG ĐẠI HỌC HÀNG HẢI TRỢ GIÚP CHO VIỆC TÌM ĐƯỜNG
TRONG KHÔNG GIAN 3D
GIẢNG VIÊN HƯỚNG DẪN: ThS NGUYỄN HẠNH PHÚC
GIẢNG VIÊN PHẢN BIỆN: ThS.PHẠM TRUNG MINH
Trang 2TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG KHU HIỆU BỘ TRƯỜNG ĐẠI HỌC HÀNG HẢI TRỢ GIÚP CHO VIỆC TÌM ĐƯỜNG
TRONG KHÔNG GIAN 3D
GIẢNG VIÊN HƯỚNG DẪN: ThS NGUYỄN HẠNH PHÚC
Trang 3MỤC LỤC
Trang 4DANH MỤC CÁC HÌNH VẼ TRONG BÁO
Trang 6ỨNG DỤNG OPEN GL XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG
MỘT SỐ TÒA NHÀ KHU HIỆU BỘ CHƯƠNG 1 MỞ ĐẦU
1. Giới thiệu
1.1. Thời kỳ 1956-1958 (Trường Sơ cấp Hàng hải).
Ngày 01/4/1956, Trường sơ cấp Lái tàu được thành lập tại Nhà máynước đá, đường Cù Chính Lan Thành phố Hải Phòng (nay là trụ sở của Công ty vận tải thủy số 3) Đồng chí Kiều Công Quế, giám đốc Cảng Hải Phòng, kiêm Hiệu trưởng; đồng chí Nguyễn Văn Quế làmPhó Hiệu trưởng thường trực Khóa đầu có 120 học sinh Ngày 01/7/1956, tại số 5 Bến Bính Trường sơ cấp Máy tàu được thành lập
Đồng chí Nguyễn Văn Tiên làm Hiệu Trưởng Đầu năm 1957, sáp nhập Trường Sơ cấp Lái tàu và Trường Sơ cấp Máy tàu thành trường Sơ cấp Hàng hải, trụ sở tại số 5 Bến Bính Hải Phòng Đồng chí Nguyễn Văn Tiên bổ nhiệm quyền Hiệu trưởng
1.2. Thời kỳ 1959-1961 (Trường Trung cấp Hàng hải).
Đầu năm 1959, Trường Sơ cấp Hàng hải được nâng lên thành
Trường Trung cấp Hàng hải trực thuộc Tổng cục Giao thông thủy bộtrụ sở tại số 5 Bến Bính Hải Phòng Đồng chí Lê Văn Cường được
bổ nhiệm làm Hiệu trưởng, đồng thời giữ chức Bí thư Đảng ủy; đ/c Nguyễn Văn Tiên làm phó Hiệu trưởng (các đ/c Đặng Văn Qua, ĐàoVăn Quang sau đó thay đ/c Lê Văn Cường làm Hiệu trưởng)
Tháng 9/1959 Trường chuyển địa điểm về số 8 Trần Phú Hải Phòng,thành lập bộ phận Điện tàu thủy và tạm thời nằm trong Ban Máy tàuthủy do đ/c Lê Xuân Khảm phụ trách
1.3. Thời kỳ 1962-1975 (Trường Hàng hải Việt Nam).
Tháng 5/1962 Nhà trường thành lập Ban Điện tàu thủy do đ/c Phan Xuân Ngọc làm trưởng ban Trường chuyển trụ sở từ số 8 Trần Phú
về tiếp quản Trường Học sinh Miền Nam số 19 và 21 ở Cầu Rào Đồng chí Lê Văn Cường làm Hiệu trưởng đến hết năm 1960 Tháng 1/1963 Trường đón đoàn chuyên gia Liên Xô gồm 4 người thuộc cácchuyên ngành: Kinh tế vận tải, Hàng hải, Máy tàu, Điện tàu thủy sang giúp về bồi dưỡng giáo viên và xây dựng mục tiêu đào tạo Năm 1965 Trường sơ tán về các Xã ngoại thành thuộc Huyện Tiên Lãng Hải Phòng
Trang 7Thành lập Ban Vỏ tàu thủy do đ/c Nguyễn Văn Phiêu phụ trách Mở thêm lớp Sơ cấp Thương vụ, Sơ cấp Hàng giang học 18 tháng Mở thí điểm lớp Đại học Tại chức các ngành Hàng hải như: Lái tàu, Máy tàu, Điện tàu thủy (gọi là lớp Đại học Chống Mỹ) Đến năm
1966, chính thức thành lập Khoa Đại học Hàng hải tại Huyện QuỳnhPhụ, Tỉnh Thái Bình, các đ/c Nguyễn Minh Thuyết phụ trách ngành Lái tàu; đ/c Nguyễn Diên Niên phụ trách ngành Máy tàu thủy; đ/c Phan Xuân Ngọc phụ trách ngành Điện tàu thủy Năm 1968, Nhà trường mở thêm lớp đào tạo giáo viên ngành Hàn tàu
Năm 1970, hợp nhất các tổ Vỏ tàu, Hàn tàu, Sửa chữa máy thành Ban Cơ khí thủy Từ 1971-1975 Trường chuyển về 338 Lạch Tray (Cầu Rào) chuẩn bị cho bước phát triển mới Thời kỳ 1974-1975 đ/c
Đỗ Viết Sử được giao quyền Hiệu trưởng; đ/c Hoàng Văn Nhuận làm Bí thư Đảng ủy thời kỳ 1975-1976
1.4. Thời kỳ 1971-1984 (Phân hiệu Đại học Giao thông đường thủy)
Phân hiệu Đại học Giao thông đường thủy (GTĐT) được thành lập theo Quyết định số 115/CP của Chính phủ trên cơ sở các ngành Đại học Cơ khí thủy, Công trình thủy, Vận tải thủy của Trường Đại học Giao thông vận tải (GTVT) và Khoa Đại học Hàng hải, đ/c Vũ Lăngđược bổ nhiệm Phân Hiệu trưởng Năm 1973 Trường được Chính phủ giao đào tạo 10 ngành học Tháng 01/1973 Bộ GTVT giao nhiệm vụ cho Trường Hàng hải Việt Nam đón các ngành học thuộc Khoa Hàng hải từ Phân hiệu GTĐT về, chiêu sinh khóa mới, chuẩn
bị thành lập Trường Đại học Hàng hải Tháng 4 năm 1974 các ngànhthuộc khoa Hàng hải từ Phân hiệu đã được bàn giao xong Trường Hàng hải chuyển từ nơi sơ tán về số 338 Lạch Tray, Hải Phòng
1.5. Thời kỳ 1976-1983 (Trường Đại học Hàng hải)
Ngày 27/10/1976 Thủ tướng Chính phủ ra Quyết định số 426/TTG nâng Trường Hàng hải Việt Nam lên thành Trường Đại học Hàng hải, đ/c Trần Thiện Vụ trưởng Vụ Giáo dục Bộ GTVT kiêm Hiệu trưởng Nhà trường, đ/c Trần Ngọc Ân làm Bí thư Đảng ủy Trường thành lập khoa Tại chức-bổ túc, mở lớp bồi dưỡng sĩ quan cấp
trưởng, mở thêm ngành Điện tàu thủy Tháng 01 năm 1977 Bộ GTVT bổ nhiệm đ/c Trần Hữu Nghị Trưởng khoa Máy tàu; đ/c Nguyễn Hữu Lý Trưởng khoa Lái tàu, đ/c Phan Xuân Ngọc Trưởng khoa Điện Tháng 4/1979 đ/c Lê Đức Toàn được bổ nhiệm làm Hiệutrưởng
Trang 81.6. Thời kỳ xây dựng và trưởng thành 1984-2000
Tháng 3/1984 Bộ GTVT Quyết định số 419QĐ/TCCB nhập trường ĐHGTĐT vào Trường Đại học Hàng hải Trường Đại học Hàng hải giữ nguyên phiên hiệu, dấu và tài khoản; Đ/c Lê Đức Toàn được cử làm Hiệu trưởng Tháng 8/1989 Bộ GTVT chuẩn y mục tiêu,
chương trình, nội dung đào tạo các ngành học của Trường gồm: 10 ngành Đại học 5 năm, 01 ngành Đại học 4 năm và 2 ngành Trung học đào tạo 3 năm Tháng 9/1992, Nhà trường được Bộ Giáo dục và Đào tạo cho mở đào tạo Cao học các ngành Bảo đảm an toàn Hàng hải, Thiết bị năng lượng tàu thuyền, Điện tàu thủy, Đóng tàu, Xây dựng công trình thủy, Kinh tế vận tải thuỷ…Tháng 4 năm 1997 PGS-TS Trần Đắc Sửu được bổ nhiệm làm Hiệu trưởng thay đ/c Lê Đức Toàn
Năm 1998 được mở thêm 3 ngành đào tạo hệ đại học: Điện tự động công nghiệp, Kinh tế ngoại thương, Xây dựng dân dụng và công nghiệp
1.7. Trường Đại học Hàng hải phát triển và hội nhập (từ năm 2000 đến nay).
Năm 2004, Đ/c Đặng Văn Uy Phó Hiệu trưởng được bổ nhiệm chức
vụ Hiệu trưởng thay đ/c Trần Đắc Sửu được Bộ GTVT điều động đảm nhiệm chức vụ Cục trưởng Cục Đường sông Việt Nam, đ/c Phạm Tiến Tỉnh được Thảnh ủy cử làm Bí thư Đảng ủy Tháng 9/2005 tại Đại hội Đảng bộ lần thứ XXIV nhiệm kỳ 2005 - 2008 đ/c Đặng Văn Uy được bầu làm Bí thư
Năm 2012, Đ/c Lương Công Nhớ Phó Hiệu trưởng được bổ nhiệm chức vụ Hiệu trưởng thay đ/c Đặng Văn Uy
Trang 9chiều Cung cấp khoảng 120 tác vụ để vẽ các primitive trong nhiều mode khácnhau Với OpenGL, bạn có thể tạo ra ảnh 3 chiều cả tĩnh và động với chất lượngcao.
Là một giao diện phần mềm độc lập với phần cứng (hardware –independent software interface) hộ trợ cho lập trình đồ họa Để làm được điềunày, OpenGL không thực hiện các tác vụ thuộc về hệ điều hành cũng như khôngnhận dữ liệu nhập của người dùng (người dùng giao tiếp với OpenGL thông quaOpenGL API) Nó là lớp trung gian giữa người dùng và phần cứng Nghĩa là nógiao tiếp trực tiếp với driver của thiết bị đồ họa
OpenGL - Open Graphics Library là một tiêu chuẩn kỹ thuật đồ họa có mụcđích định ra một giao diện lập trình ứng dụng API đồ họa 3 chiều OpenGL cũng
có thể được dùng trong các ứng dụng đồ họa 2 chiều
Giao diện lập trình này chứa khoảng 250 hàm để vẽ các cảnh phức tạp từnhững hàm đơn giản Nó được dùng rộng rãi trong các trò chơi điện tử Ngoài ra
nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, môphỏng thông tin, phát triển trò chơi
2 Lập trình hiện đại.
2.1 Giới thiệu GLSL.
Ngôn ngữ OpenGL Shading (viết tắt: GLSL hoặc GLslang ), là một cấp
cao ngôn ngữ bóng dựa trên cú pháp của ngôn ngữ lập trình C Nó được tạo rabởi các ARB OpenGL để cung cấp cho các nhà phát triển kiểm soát trực tiếpcủa đường ống dẫn đồ họa mà không cần phải sử dụng ngôn ngữ lắp rápARB hoặc ngôn ngữ phần cứng cụ thể
Sơ đồ tổng quan quá trình truyền dữ liệu:
Hình 2.2.1
Sơ đồ về quá trình dựng hình:
Trang 10Hình 2.2.2.
Thay thế các chức năng cố định và các API:
Card đồ họa gần đây cung cấp cho các lập trình viên khả năng xác định các chứcnăng của hai giai đoạn được mô tả ở trên:
Shaders đỉnh có thể được viết cho giai đoạn chuyển đổi Vertex
Fragment shaders thay thế Fragment Texturing và chức năng cố định màu củađối tượng
Vertex:
Bộ xử lý đỉnh chịu trách nhiệm để chạy các shaders đỉnh Đầu vào cho mộtShader đỉnh là các dữ liệu đỉnh, cụ thể là vị trí, màu sắc, normals của nó, vv, tùythuộc vào những gì các ứng dụng OpenGL gửi
/*OpenGL mã sau sẽ gửi cho các bộ vi xử lý đỉnh một màu sắc và
Trang 112.2 OpenGL/GLSL: Mô hình tổng quát:
Hình 2.2.3
3 Nội dung.
3.1 Các hiệu ứng đã sử dụng trong dự án:
Hiệu ứng Bump Maping:
Bump maping: là một kỹ thuật trong đồ họa máy tính để mô phỏng vachạm mạnh và nếp nhăn trên bề mặt của một đối tượng Điều này đạt được bằngcách xáo trộn normals bề mặt của đối tượng và sử dụng các xáo trộn bìnhthường trong quá trình tính toán chiếu sáng Kết quả là một bề mặt rõ ràng gậpghềnh hơn là bề mặt trơn mịn mặc dù bề mặt của các đối tượng cơ bản là khôngthực sự thay đổi Lập bản đồ băng được giới thiệu bởi Blinn vào năm 1978
Hình 2.3.1
Trang 124.1.Ánh sáng điểm:
Ánh sáng: là rất phức tạp Sự tương tác giữa bề mặt và ánh sáng chủ yếu
được hiểu rõ về tính chất vật lý Nhưng thực sự làm các công việc tính toán đầy
đủ cho sư tương tác giữa ánh sáng và bề mặt như hiện nay được hiểu là tốn kém
Một mô hình chiếu sáng: là một thuật toán, một hàm toán học, xác định
mức độ bề mặt tương tác với ánh sáng
Một bề mặt có màu xanh dưới ánh sáng trắng vì bề mặt hấp thụ tất cả cáctia sáng không có màu xanh của ánh sáng và chỉ phản ánh màu xanh.Nếu mộtnguồn sáng chiếu một ánh sáng màu đỏ trên bề mặt, bề mặt sẽ rất tối, do bề mặthấp thụ ánh sáng không phải màu xanh
Hình 2.4.1
Vì vậy, màu sắc của một bề mặt là một sự kết hợp của các đặc điểm hấp thụcủa bề mặt (có bước sóng được hấp thụ hoặc phản xạ) và các bước sóng của ánhsáng chiếu vào bề mặt đó
Xấp xỉ đầu tiên được thực hiện là không phải tất cả các bước sóng vậtchất Thay vì theo dõi hàng triệu bước sóng trong quang phổ nhìn thấy được,chúng ta chỉ theo dõi 3 màu đỏ, xanh lá cây và xanh dương(RGB)
RGB cường độ ánh sáng phản xạ từ bề mặt tại một điểm đặc biệt là sự kếthợp của ánh sáng RGB đặc điểm hấp thụ của bề mặt tại thời điểm đó và RGBcường độ ánh sáng chiếu vào thời điểm đó trên bề mặt Tất cả trong số này, ánhsáng phản chiếu, ánh sáng nguồn, và sự hấp thụ bề mặt, có thể được mô tả trong
3 màu RGB, trên phạm vi [0, 1]
Trang 13Cường độ ánh sáng chiếu trên một bề mặt phụ thuộc vào (ít nhất) haiđiều Đầu tiên, nó phụ thuộc vào cường độ ánh sáng đi tới bề mặt từ một nguồnánh sáng Và thứ hai, nó phụ thuộc vào góc giữa bề mặt và ánh sáng.
Xem xét một bề mặt phẳng hoàn toàn Nếu chiếu một tia sáng với mộtcường độ trực tiếp lên bề mặt, cường độ ánh sáng mà tại mỗi điểm dưới bề mặt
sẽ là một giá trị được biết, dựa trên cường độ của ánh sáng chia cho diện tích dựđược chiếu sáng trên bề mặt, diện tích bị ảnh hưởng bới góc chiếu sáng
Hình 2.4.2
Hình 2.4.3
Trang 14Ánh sáng khuếch tán: dùng để chỉ một tính chất đặc biệt của ánh sáng ảnh
hưởng tới bề mặt được tương tác, nơi ánh sáng đi từ nguồn ánh sáng và đượcphản chiếu từ bề mặt với nhiều góc độ, thay vì phản chiếu như một tấm gươnghoàn hảo
Hình 2.4.4
Phương trình khuếch tán:
Trong đó: Cosin là góc tới của ánh sáng Khi góc tới là 0 °, cosin của gócnày ở mức 1,0 Ánh sáng sẽ ở mức sáng nhất của nó Khi góc tới là 90 °, cosincủa góc này sẽ được 0,0, vì vậy ánh sáng sẽ là 0 Giá trị nhỏ hơn 0 được kẹp 0
Đèn gần và xa:
Trang 15Hình 2.4.5.
4.3 Ánh sáng toàn cầu( ánh sáng hướng).
Ánh sáng toàn cầu khác ánh sáng điểm ở chỗ ánh sáng toàn cầu không có
hệ số suy giảm cường độ ánh sáng, khi đó hướng ánh sáng song song với nhau
Trang 17glBindBufferRange(GL_UNIFORM_BUFFER, indexVL,uniformVL,0, sizeof(VatLieu));
AS.CuongDoAnhSang=glm::vec4(1.0f,1.0f,1.0f,1.0f);
AS.CuongDoAnhSangMoiTruongXungQuanh=glm::vec4(0.3f,0.3f,0.3f,1.0f);
EMu=-(EMu*EMu);
float Gauss=exp(EMu);
Gauss = GocToiAS != 0.0 ? Gauss: 0.0;
Trang 18AnhSangTT+=VL.MauKhuyechTan*AS.CuongDoAnhSang*Gauss;
return AnhSangTT;
}void main(){
vec4MauVLAS=VL.MauVL*AS.CuongDoAnhSangMoiTruongXungQuanh;
MauVLAS += TinhToanMauSac();
MauXuatRa= MauVLAS;
}
- Sử dụng hiệu ứng Bump Mapping
Bump Mapping là một trong những kỹ thuật chiếu sáng điểm ảnh, có
nghĩa là tất cả các tính toán chiếu sáng (ứng dụng của các phương trìnhánh sáng) được tính cho mỗi điểm ảnh Sức mạnh của bộ vi xử lý đồ họahiện tại (hoặc GPU) làm cho nó có thể đạt được độ chính xác này trongkhi vẫn giữ tốc độ khung hình chấp nhận được
Nhưng những khác biệt giữa Texture thường và Bump mapping là:
Thứ nhất, Bump mapping về cơ bản là một kỹ thuật multitexturing
Thứ hai là tất cả các tính toán ánh sáng được thực hiện cho mỗi điểm ảnh
Màu sắc cuối cùng của các điểm ảnh hiển thị trên màn hình được cho bởi công thức sau:
If = Ia + Id + Is
Trong đó:
If: là cường độ của màu sắc cuối cùng pixel
Ia: là cường độ của màu sắc xung quanh
Id: là cường độ của màu khuếch tán
ls: của màu sắc phản chiếu
Ia là thành phần môi trường xung quanh Ia là kết quả của phép nhân giữa
các thành phần môi trường xung quanh của ánh sáng và các vật liệu của đốitượng 3D
Ia = Al * Am
Trang 19Al là cường độ môi trường xung quanh của ánh sáng
Am là cường độ môi trường xung quanh của vật liệu
Id là cường độ của màu khuếch tán được tính như sau:
Id = DL * Dm * LambertTerm
DL là thành phần khuếch tán của ánh sáng và Dm của vật liệu
LambertTerm: là góc cosin đữa hướng ánh sáng và pháp tuyến bề mặt LambertTerm = max (N dot L, 0.0)
N: là vector pháp tuyến bề mặt được chiếu sáng
L: là vector hướng ánh sáng
Is: là múc sắc phản chiếu
Is = Sm x Sl x pow( max(R dot E, 0.0), f )
Is là từ xa phức tạp nhất để tính toán
Sl là cường độ phản chiếu của ánh sáng
Sm là cường độ phản chiếu của vật liệu
E là vector hướng nhìn máy ảnh vector và R là
varying vec3 lightVec;
varying vec3 eyeVec;
varying vec2 texCoord;
attribute vec3 vTangent;
void main(void)
{
gl_Position = ftransform();
texCoord = gl_MultiTexCoord0.xy;
vec3 n = normalize(gl_NormalMatrix * gl_Normal);
vec3 t = normalize(gl_NormalMatrix * vTangent);
vec3 b = cross(n, t);
vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex);
vec3 tmpVec = gl_LightSource[0].position.xyz - vVertex;lightVec.x = dot(tmpVec, t);
Trang 20varying vec3 lightVec;
varying vec3 eyeVec;
varying vec2 texCoord;
uniform sampler2D colorMap;
uniform sampler2D normalMap;
uniform float invRadius;
void main (void)
{
float distSqr = dot(lightVec, lightVec);
float att = clamp(1.0 - invRadius * sqrt(distSqr), 0.0, 1.0);
vec3 lVec = lightVec * inversesqrt(distSqr);
vec3 vVec = normalize(eyeVec);
vec4 base = texture2D(colorMap, texCoord);
vec3 bump = normalize( texture2D(normalMap,texCoord).xyz * 2.0 - 1.0);
vec4 vAmbient = gl_LightSource[0].ambient *gl_FrontMaterial.ambient;
float diffuse = max( dot(lVec, bump), 0.0 );
vec4 vDiffuse = gl_LightSource[0].diffuse *gl_FrontMaterial.diffuse * diffuse;
float specular = pow(clamp(dot(reflect(-lVec, bump), vVec), 0.0,1.0), gl_FrontMaterial.shininess );
vec4 vSpecular = gl_LightSource[0].specular *gl_FrontMaterial.specular * specular;
gl_FragColor = ( vAmbient*base + vDiffuse*base + vSpecular)
* att;
}
Hiệu ứng sử dụng sự pha trộn dữa 2 kết cấu màu sắc và bình thường kết cấu:
Trang 21Hình 2.4.7.
4.4. Thuật toán phát hiện va chạm sử dụng sphere.
- Kỹ thuật va chạm, cho phép bạn di chuyển một quả cầu thông qua một thế giới và phát hiện va chạm, nhưng cũng phản ứng sau khi va chạm theo một cách mà các game thủ mong chờ Kỹ thuật này cũng cho phép trượt dọc theo
Trang 22mặt của quả cầu sẽ giao nhau với mặt phẳng trước khi chúng va chạm Cụ thể hơn ở hai hình ảnh sau:
Hình 2.4.10
Hình 2.4.10 cho thấy các vector pháp tuyến mặt phẳng có thể được sử dụng
để xác định các điểm trên bề mặt của quả cầu mà cuối cùng sẽ giao mặt phẳng
- Phản ứng sau khi va chạm Cho đến nay, chúng tôi đã chỉ nóivề làm thế nào
để đối phó với va chạm Bất kỳ chuyên gia vật lý sẽ cho bạn biết rằng vector vận tốc đại diện cho năng lượng dưới dạng đà Một khi một vụ va chạm xảy
ra, có năng lượng còn sót lại (khoảng cách còn lại đến đích.) Một số năng lượng được hấp thụ trong vụ va chạm (điều này thay đổi theo góc tới của vụ
va chạm.) Bạn có thể làm bất cứ điều gì bạn muốn với năng lượng còn sót lạinày , như phản xạ và trượt Tôi sẽ bao gồm trượt vì nó là phổ biến
nhất trượt, ở dạng đơn giản nhất được thực hiện dọc theo mặt phẳng trượt
Hình 2.4.11
Hình 2.4.11 minh họa quá trình trượt Đầu tiên, một vụ va chạm được phát
hiện, và vector vận tốc (dài đường chéo dòng màu xám) được cắt ngắn tại
điểm mà nó va chạm với máy bay Số còn lại (năng lượng còn sót lại - tất cả mọi thứ phía sau mặt phẳng) không được bỏ đi Thay vào đó, điểm đến được chiếu lên mặt phẳng cùng với vector pháp tuyến
Hình 2.4.12
Trang 23Hình 2.4.12 cho chúng ta thấy rằng, như đã nói ở trên, khoảng cách trượt sẽ thay đổi theo góc tới, thậm chí còn nghĩ các vectơ vận tốc ban đầu rất giống nhau trong chiều dài
Hình 2.4.13
Hình 2.4.13 là các mặt phẳng trượt , giống như bất kỳ mặt phẳng, được xác
định bởi một nguồn gốc (một điểm) và một pháp tuyến Nguồn gốc với mặt phẳng trượt là điểm giao nhau với hình cầu Pháp tuyến của mặt phẳng này làvector từ điểm giao nhau đến trung tâm của hình cầu
CHƯƠNG 3 XÂY DỰNG HỆ THỐNG
1. Xây dựng đối tượng đồ họa.
- Cấu trúc chung lưu dữ liệu của đối tượng trong file *.xml:
Trang 24Point là tọa độ đỉnh.
VecN là vector pháp tuyến của đỉnh
TextCoord là tọa độ của kết cấu của đỉnh
VAO là một đối tượng đại diện cho một đối tượng trong đồhọa
-142.5317 4.441772 -131.347 -142.5317 4.224913 -131.347
Trang 29<source attrib="1" />
<source attrib="2" />
</vao>
<! ===========Index=============== > <indices cmd="triangles" type="ushort">
<mesh>
<! ===========Point=============== > <attribute index="0" type="float" size="3" > -121.4197 2.610796 -161.3872