Professional Documents
Culture Documents
Thuc Hanh 2
Thuc Hanh 2
Đường sinh được mô tả trong mặt phẳng x – y. Sau đó, nó sẽ được quay quanh trục y để tạo
ra đối tượng tròn xoay.
Bài tập: Lần lượt thay linear_spline bằng quadratic_spline, cubic_spline và bezier_spline
Viết báo cáo: Dựng lại ảnh và insert ảnh kết quả vào báo cáo. Giải thích tại sao ta không thể
sử dụng bezier_spline trong trường hợp này.
Bài tập: Hãy thay đường sinh bằng đường linear_spline có 12 điểm:
<0.0, 0.0>, <0.0, 0.0>, <4.5, 0.5>, <5.0, 30>,
<1.5, 6.5>, <2.5, 10.0>, <2.5, 10.0>, <1.5, 6.5>,
<5.0, 3.0>, <4.5, 0.5>, <0.0, 0.0>, <0.0, 0.0>
Viết báo cáo: Dựng lại ảnh. Bạn phải thay đổi toạ độ (location) và điểm nhìn (look_at) của
camera thấy được đối tượng. Cho biết các giá trị đã thay đổi. Insert ảnh kết quả vào báo cáo.
Vẽ đường sinh trên mặt phẳng x – y (tương tự ví dụ trên).
Bài tập: Lần lượt thay linear_spline bằng quadratic_spline, cubic_spline và bezier_spline
Viết báo cáo: Dựng lại ảnh và insert ảnh kết quả vào báo cáo. Giải thích lúc này bezier_spline
lại chạy được.
Bài tập: Hãy thử bỏ bớt 1 số điểm bị trùng và thử lại với quadratic_spline và cubic_spline.
Viết báo cáo: Hãy quan sát các ảnh kết quả và giải thích theo sự hiểu biết của bạn.
Bài tập: Để có thể nhìn thấy được các điểm điều khiển, bạn hãy thêm các hình cầu vào vị trí
của chúng (với z=0) . Ví dụ: hãy thêm 3 hình cầu này vào cảnh của bạn:
sphere {<0.0, 0.0, 0.0>, 0.2 texture {pigment {Red}}}
sphere {<4.5, 0.5, 0.0>, 0.2 texture {pigment {Red}}}
sphere {<5.0, 3.0, 0.0>, 0.2 texture {pigment {Red}}}
Viết báo cáo: tại sao ta phải mô tả đường cong bằng các điểm 2 chiều mà không phải là 3
chiều ? Điều gì sẽ xảy ra nếu bạn cố tình mô tả đường cong bằng các điểm 3D ? Gợi ý: hãy thử
vẽ đường cong trên giấy và so sánh với quả bạn quan sát được trên màn hình.
Viết báo cáo: Sự khác giữa các loại đường cong: linear, quadratic, cubic, bezier là gì ? Bạn thấy
sự mềm mại của các đường cong có gì khác nhau không ? Khác nhau như thế nào ? Các đường
cong có đi qua các điểm điều khiển không ? Thời gian dựng ảnh có khác nhau không ?
3. Tạo đối tượng bằng cách tịnh tiến (prism object)
Tương tự như lathe, đối tượng có được bằng cách quay một đường sinh quanh trục y, đối
tượng prism được sinh ra bằng cách tịnh tiến một đường sinh theo một quỹ đạo nào đó. Kết
quả ta được 1 đối tượng có dạng giống hình lăng trụ.
Kiểu đường sinh cơ sở giống như các đối tượng lathe: linear_spline, quadratic_spline,
cubic_spline và bezier_spline.
Quỹ đạo của quá trình tịnh tiến có thể là đường thẳng (linear_sweep) hoặc đường cong bậc
hai (conic_sweep). Trong trường hợp thứ nhất, đường biên của đối tượng kết quả vuông góc
với mặt phẳng x-y. Trong trường hợp thứ hai, việc tạo hình được thực hiện bằng phép vị tự
(homothetic transformation – xem Hình học 11) chứ không phải phép tịnh tiến (translation).
Vì thế trong quá trình di chuyển đường cong cơ sở sẽ thay đổi kích thước so với đường cong
ban đầu. Kết quả ta thu được một đối tượng dạng conic chứ không phải hình dạng lăng trụ:
Đường cong gốc sẽ nằm ở vị trí y = 1 (height2). Sau đó kích thước giảm dần cho đến khi độ
cao = 0 (height 1). Lúc này đường cong chỉ còn 1 điểm.
Ta cũng có thể mô tả quá trình này theo chiểu ngược lại như sau: Bắt đầu tại vị trí y = 0
(height1), ta có 1 điểm, sau đó đường cong đi lên và lớn dần, cho đến khi y = 1 (height2), kích
thước nó đúng bằng kích thước đường sinh cơ sở. Nếu height2 > 1 đường cong tiếp tục đi lên
và lớn dần.
Nếu ta bắt đầu tại y = height1 < 0 thì sao ? Xem hình bên dưới và lý giải nhé !
Bài tập & viết báo cáo: Hãy một số đối tượng prism với các kiểu đường sinh khác nhau, kiểu
quét khác nhau và height1, height2 khác nhau (khác 0 và 1). Từ đó mô tả lại cách thức mà
POVRAY tạo đối tượng bằng lệnh prism. Copy code và ảnh kết quả vào báo cáo của các bạn.
4. Các phép biến đổi hình học
Có 3 phép biến đổi cơ bản: translate, scale và rotate (xem lại lý thuyết).
Bài tập:
Gõ lại đoạn chương trình sau
#include "colors.inc"
#include "textures.inc"
camera {
location <-12,4,4>
look_at <3,3,3>
}
light_source{<90, 30, -60> color White}
light_source{<90, -30, 60> color White}
light_source{<-90, 30, -60> color White}
sphere {<0,0,0>, 0.2 texture{pigment {Orange}}}
cylinder {<0,0,0><10,0,0>, 0.1 //axis x
texture{pigment {Cyan}}
}
cylinder {<0,0,0><0,10,0>, 0.1 //axis y
texture{pigment {Pink}}
}
cylinder {<0,0,0><0,0,10>, 0.1 //axis z
texture{pigment {Yellow}}
}
//object1
union {
cylinder {<1,1,1>, <2,2,2>, 1
texture {pigment {Green}}
}
sphere {<2,2,2>, 1
texture {pigment {Green}}
}
//bo sung cac lenh transform o day
}
//object2
union {
cylinder {<5,5,-5>, <7,7,-7>, 2
texture {pigment {Red}}
}
sphere {<5,5,-5>, 2
texture {pigment {Red}}
}
//bo sung cac lenh transform o day
}
a. Thêm các đoạn lệnh biến đổi hình học cho object1 (Green) để nó trở thành object2
(Red): giống hệt nhau về vị trí, kích thước, hướng.
b. Thêm các đoạn lệnh biến đổi hình học cho object2 (Red) để nó trở thành object2
(Green): giống hệt nhau về vị trí, kích thước, hướng.
Chú ý: câu a và b độc lập nhau.
Viết báo cáo: Ghi lại các đoạn lệnh biến đổi hình học (theo đúng thứ tự) bạn đã sử dụng cho
câu a và câu b. Lý giải tại sao bạn chọn thứ tự này. Theo bạn, có cách nào biến đổi nào khác
để đạt được kết quả như thế không ? Tại sao ? Sự khác nhau của các phép biến đổi ở câu a và
câu b là gì ?
5. Thêm chuỗi ký tự vào cảnh
POV-RAY hỗ trợ đối tượng text để thêm 1 chuỗi ký tự vào cảnh 3D. Cú pháp khá đơn giản:
text {ttf “Tên font” “Chuỗi ký tự cần thêm” độ_dày độ_lệch}
Trong đó, độ_dày giống như chiều cao (height) của đối tượng prism; độ_lệch là khoảng di
chuyển sau mỗi đối tượng. Tham số này cho phép ta tạo ra chuỗi ký tự được sắp xếp như
bậc thang. Thông thường tham số này được gán = 0 (tương đương với với <0, 0, 0>).
Chuỗi ký tự được tạo ra theo chiều ngang (trục x) từ trái sang phải. Mặt trước của các ký tự
nằm trên mặt phẳng x-y (z = 0). Độ dày của chữ hướng theo chiều dương của trục z. Vì thế,
mặt sau của chữ sẽ nằm trên mặt phẳng z = độ_dày.
6. Tự dựng ảnh 3D của bạn
Với các kiến thức bên trên, bạn có thể tự mình tạo ra một cảnh 3D của riêng bạn. Hãy tự mình
tưởng tượng và xây dựng một cảnh 3D và dựng ảnh kết quả. Thêm nội dung file nguồn (.pov)
và file ảnh kết quả (.png) kèm theo báo cáo của bạn.
Yêu cầu:
- Mỗi nhóm tạo 1 cảnh khác nhau.
- Định dạng file ảnh: PNG
- Sử dụng nhiều đối tượng khác nhau trong cảnh (prism, lathe).
- Sử dụng ít nhất 1 lathe bezier_spline, 1 prism conic_sweep, 1 prism rỗng (2 đường
biên, xem ví dụ bên trên)
- Sử dụng các phép toán CSG để tạo ra các đối tượng mới (union, intersection,
difference)
Viết báo cáo: Mô tả và giải thích cảnh của bạn. Hãy chứng minh cho mọi người thấy rằng đây
là một tác phẩm độc đáo !
Ví dụ:
Chúc các bạn làm tốt !