Đồ họa máy tính và hiện thực ảo - Pdf 10

Đồ hoạ máy tính và thực tại ảo Ngôn ngữ VRML

Tìm hiểu ngôn ngữVRML

Lời nói đầu
Trong xu thế tin học hoá toàn bộ cuộc sống đang diễn ra tấp nập hiện nay,lĩnh
vực đồ hoạ đóng góp một vai trò cực kỳ to lớn.Ở đâu ta cũng có thể tìm thấy những
minh hoạ cho việc áp dụng đồ hoạ máy tính vào cuộc sống : xử lý ảnh, phim hoạt
hình, đặc biệt là thực tại ảo(Virtual Reality_VR)..Thực tại ảo,là một nghành công
nghệ cao,có ứng dụng đặc biệt rộng rãi.Từ các trò chơi 3D cực kì sống động đến
những mô phỏng phức tạp trong công nghiệp và khoa học công nghệ(mô phỏng các
vụ thử hạt nhân,mô phỏng thế giới ảo dùng để huấn luỵện phi công…),từ những
trường hợp đơn giản đến các trường hợp cực kì quan trọng.
Một phần quan trọng của VR là mô phỏng thế giới thực xung quanh chúng
ta.Để làm được điều này, chúng ta có thể dùng ngôn ngữ VRML(Virtual Reality
Modeling Language).Đây là một ngôn ngữ tương đối đơn giản nhưmg cực kỳ hiệu
quả.Với VRML,kết hợp với trình duyệt IE hay Nescape,chúng ta có thể mô phỏng
thế giới quanh ta một cách như ý.Trong thế giới đó,có các vật thể,có các tương tác và
có các cảm biến y như thế giới thực.Ứng dụng của VRML cũng rất rộng rãi : mô
phỏng nhà cửa,thiết kế các phòng học ảo,các thiết bị thí nghiệm ảo, lập trình không
gian ảo…
Trong bài tập lớn môn học này,em đã tìm hiểu về VRML và dùng ngôn ngữ
VRML để mô phỏng toà nhà C14-15 của trường đại họcBKHN.Tuy được sự hướng
dẫn tận tình của thầy Hùng nhưng do thời gian và năng lực còn có hạn nên kết quả
còn nhiều thiếu sót.Tuy nhiên,em rất cám ơn thầy Hùng vì môn học và bài tập lớn
này đã đem lại cho em nhiều hiếu biết về thế giới đồ hoạ,mở ra cho chúng em một
hướng đi mới trong lĩnh vực tin học.
Nguyễn Vĩnh Thuận –CNPM K46
4
ho mỏy tớnh v thc ti o Ngụn ng VRML


không có ai viết VRML hoàn hảo ngay từ lần đầu tiên.
Tất cả các tài liệu internet theo chuẩn MIME, chuẩn VRML MIME là model/vrml, tơng
tự nó có thể là x-world/x-wrml. Mỗi khi bạn tạo thế giới của bạn, bạn cần tạo nó lên trang
Nguyn Vnh Thun CNPM K46
5
ho mỏy tớnh v thc ti o Ngụn ng VRML

web để mọi ngời có thể xem nó. Đối với việc này bạn cần một vài ISP (Internet Service
Provider). Bạn có thể sử dụng không gian này để đa các file lên trang web, có thể là các
file HTML thông thờng.
d. Headers và chú thích.
VRML(Virtual Reality Modeling Language), l ngụn ng cho phộp mụ t cỏc i
tng 3D ca th gii thc, v chy trờn mụi trng web. Nú cho phộp xõy dng nờn cỏc
file . wrl cú th m c bng cỏc trỡnh duyt web nh IE hay NESCAPE. Mt file vrml
cú dng nh sau:
Tiờu file: #VRML V2.0 utf8
trong ú utf8 l cm t cho phộp dựng cỏc ký t quc t trong file VRML sau ú l cỏc
nỳt. Điều này nói cho các browser xem xét file VRML, và phiên bản này nó đang sử
dụng. Trong trờng hợp này nó là phiên bản 2.0. VRML là trờng hợp dễ bị ảnh hởng(case
sensetive), việc sử dụng chính xác nh bạn đã thấy. Phần utf8 thông báo cho browser
chuẩn chuỗi văn bản để sử dụng. VRML 1.0 hoặc là ascii hoặc utf8 nhng phiên bản 2.0
chỉ là utf8, tốt nhất để sử dụng.
Bất kỳ dòng nào bắt đầu với kí tự # là chú thích, và bị lờ đi khỏi bộ phân tích cú
pháp VRML. Tiếp theo là VRML hợp lệ.
e,Các nút trong VRML
Nỳt u tiờn thng l nỳt WORLDINFO cha thụng tin c t v file vrml sau ú l
cỏc loi nỳt khỏc xõy dng nờn file vrml.
Nút này chứa thông tin chung về thế giới ( the world) nh tiêu đề của thế giới, đợc
hiển thị trong thanh tiêu đề của cử sổ browser tơng tự nh cờ TITLE trong HTML.
WorldInfo cũng có thể chứa một chuỗi thông tin, chứa các thông tin khác về file. Bạn có

mà chỉ được dùng các nút cơ bản của nó. Một hình dạng hình học bất kỳ có thể được xây
dựng qua nút Shape. Cấu trúc của nút này có dạng như sau:
Shape{
appearance Appearance{
material Material{
diffuColor 1 0 0
Shininess 0
}
textture ImageTextTure{}
}
geometry Box{}
}
trong đó appearance là thuộc tính của nút giá trị của nó chỉ có thể là nút Appearance dùng
chỉ dạng bề mặt của vật thể . Trong nút Appearance co các trường material dùng để chỉ
màu, độ bóng, độ trong suốt của vật thể. Trường textture dùng để chỉ kết cấu của vật thể,
giá trị của trường này có thể là các nút ImageTextture,MovieTextture...
Chúng ta điểm qua một số nút cơ bản
Nguyễn Vĩnh Thuận –CNPM K46
7
ho mỏy tớnh v thc ti o Ngụn ng VRML

e1.Các nút appearrance
Khi chúng ta nhìn thấy đối tợng FBOX chúng ta đã định nghĩa trớc đây, nút Shape
có một trờng gọi là appearance, nó sử dụng để chứa trờng Appearance đợc chỉ ra dới
đây:
DEF FBOX Shape {
appearance Appearance {
material Material {
}
}

8
ho mỏy tớnh v thc ti o Ngụn ng VRML

là 1 0 0, trắng là 1 1 1, xám là 0.5 0.5 0.5...Cách này có thể chỉ rõ các màu trong khi sử
dụng nhng bạn có thể sử dụng bộ lựa chọn màu trong PaintShop Pro hoặc một vài thứ để
có thể nhận đợc các màu bạn thích và chuyển chúng thành giá trị VRML.
Vì vậy nếu bạn muốn tạo hình khối ban đầu, với màu xanh bán trong suốt, bạn sẽ
định nghĩa dạng của nó nh sau:
Shape {
appearance Appearance {
material Material {
emissiveColor 0 0.8 0
transparency 0.5
}
}
geometry Box {
}
}
e3,Kết cấu hình ảnh( image texture)
Các màu sắc thú vị là rất tốt nhng để trông thực sự là hấp dẫn, chúng ta phải có sơ
đồ kết cấu các vật thể. Điều này đợc thực hiện qua trờng texture của nút Appearance .
trờng này chứa ba loại nút kết cấu. Loại đầu tiên chúng ta xem xét là ImageTexture. Đây
là sơ đồ kết cấu cơ sở, ánh xạ toàn bộ hình ảnh vào một đối tợng. Nút có thể là sơ đồ kết
cấu một đối tợng với file JPEG hoặc PNG. Một vài browser có thể hỗ trợ nó, nhng đây
không phải là chuẩn. nút có thể chứa ba trờng. Đầu tiên, url chỉ rõ hình ảnh để sử dụng
chuẩn dạng URL. Bạn có thể chỉ rõ danh sách hình ảnh trong các ngoặc vuông, browser
sẽ hiển thị hình ảnh đầu tiên trong danh sách mà nó tìm thấy. Hai trờng khác là repeatS
và repeatT, thông báo liệu kết cấu lặp lại theo hớng trục ngang (S) hay trục dọc(T). Điều
này dẫn đến giá trị boolean là TRUE hoặc FALSE. chúng chỉ thực sự hiệu quả khi kết hợp
với TextureTransform, chúng ta khôg trình bày kỹ ở phần sau. Bạn có thể chỉ rõ các

e5. Pixel Texture
Nút này cho phép bạn định nghĩa các kết cấu bằng tay trong file VRML. Điều này
dờng nh khó tin là có thể đầy đủ nhng nó không có nh đã sử dụng, bạn sẽ thấy sau đây.
Nó có trờng image thay thế cho trờng URL.
Trờng image bao gồm hai con số chỉ rõ chiều rộng và cao của kết cấu, tiếp theo là
một con số chỉ rõ số lợng các thành phần. Thành phần màu sắc là tỉ lệ xám, hai thành
phần màu sắc là tỉ lệ xám với độ trong suốt, thành phần thứ ba là màu RGB và thứ t là
RGB với độ trong suốt. Sau các đối số này là danh sách các điểm pixel, là các số hexa với
một byte cho mỗi thành phần. Vì vậy pixel thành phần thứ t là red và 50 % độ trong suốt
là 0xFF00007F. Các pixel đợc sắp xếp theo thứ tự từ đáy trái đến đỉnh bên phải. Ví dụ đ-
ợc chỉ ra dới đây:
DEF PIXMAP Appearance {
texture PixelTexture {
image 2 2 3 0xFF0000 0x00FF00 0x0000FF 0xFF0000
}
}
Nguyn Vnh Thun CNPM K46
10
ho mỏy tớnh v thc ti o Ngụn ng VRML

Chúng ta chỉ cần mô tả nhanh về các số hexa. Thông thờng ở máy tính thuận tiện
khi chỉ rõ các con số là các số thập phân thông thờng (0-9) hoặc nhị phân (0-1) và ngoài
ra có một loại khác là hexadecimal, có dạng nh sau:
Hexadecimal Decimal
0 0
1 1
2 2
3 3
4 4
5 5


Nút Text là phức tạp, FontStyle phức tạp hơn. Cách tốt nhất để thực hiện ở đây là
liệt kê danh sách các trờng.
FontStyle {
size
family
style
horizontal
leftToRight
topToBottom
language
justify
spacing
}
size là chiều cao của dòng văn bản theo hệ mét. Trờng family có thể nhận 3 giá trị và thay
đổi loại bề mặt cuỉa font. Ba loại đó là "SERIF", "SANS", hoặc "TYPEWRITER", chúng
rất rõ ràng. Để thay đổi cách xem xét văn bản, bạn có thể sử dụng trờng style, có thể nhận
một trong các kiểu sau: "PLAIN", "BOLD", "ITALIC", hoặc"BOLD ITALIC". horizontal
là giá trị boolean chỉ ra liệu văn bản là ngang horizontal ("TRUE") hoặc dọc vertical
("FALSE"). leftToRight và topToBottom cũng là giá trị boolean và cân bằng trong các
hoạt động trớc. Tơng tự chuỗi utf-8 có thể xuất hiện khác nhau, phụ thuộc vào ngôn ngữ
trong nó, vì vậy điều này là mã hoá hai kí tự đối với ngôn ngữ. Thực sự không biết các mã
là gì, tốt nhất là lờ đi trờng này. justify là hiệu quả và cóthể là một trong bất kỳ "BEGIN",
"MIDDLE", hoặc "END". spacing là số lợng không gian trôngd giữa các dòng trong văn
bản. 1 là bình thờng, 2 là gấp đối khoảng cách (dòng trồng giữa mỗi dòng.
Đó là FontStyle , bạn có thể thực sự lờ đi các trờng nhng style, family và justify
thực sự là hiệu quả.
e7,Cỏc i tng c bn
ch hỡnh dỏng vt th ta dựng trng geometry. Giỏ tr ca trng ny l cỏc nỳt
hỡnh hc c bn.VRML h tr 4 i tng c bn , ú l: Cone(hỡnh nún), Cylinder(Hỡnh

Transform{
Scale Chỉ sự biến đối của đối tượng
Translation chỉ các giá trị dịch chuyển theo các trục x, y, z
Rotation chỉ góc quay và trục quay
Children[] các nút con chịu tác động của translation và rotation
}
Trong nút Transform Scale có tác động đầu tiên, sau đó đến rotation và translation
Để gom nhiều nút lại với nhau ta sử dụng nút Group, cú pháp của nó như sau:
Group{
Children[] chứa các nút con của nút này
Nguyễn Vĩnh Thuận –CNPM K46
13
ho mỏy tớnh v thc ti o Ngụn ng VRML

}
Trong VRML cũn cú cỏc nỳt cm bin vi uụi l Sensor, cho phộp chỳng ta mụ
phng mt s loi cm bin trong thc t, nh TimerSensor, TouchSensor, PlaneSensor....
Cỏc nỳt ni suy, nh PositionInterpolator, OrientationInterpolator, ColorInterpolator, cho
phộp bn chuyn cỏc giỏ tr khỏc kiu v kiu giỏ tr m bn mong mun nh chuyờn s
thay ụi thi gian v giỏ tr dch chuyn ca mt vt th. Cỏc nỳt ni suy úng vai trũ l
cỏc Engine trong lung Animation ca VRML. TRong VRML cũn cú mt s loi nỳt khỏc
nh LOD, Switch..
2.Cỏc kiu d liu trong VRML
Nh đã nói ở phần trớc, các file VRML bao gồm một nhóm các nút. Các nút này có
thể chứa cá nút khác và có thể chứa các trờng. Mỗi trờng có các kiểu dữ liệu khác nhau.
Sau đây là mô tả của chúng.
SFBool
Đây là giá trị boolean đơn lẻ, có thể nhận giá trị "TRUE" or "FALSE".
SFColor & MFColor
SFColor là một trờng chứa màu đơn lẻ, đợc tạo nên từ ba số thực dấu chấm động

Loại này chứa danh sách các kí tự trong tập kí tự utf-8. ASCII là tập hợp phụ của
utf-8, vì vậy bạn không cần lo lắng về tập các kí tự khác nhau hoặc về bất kỳ điều gì khác.
Chuỗi (SFString) nh "Hello", trong dấu nháy kép. Một danh sách (MFString) trông giống
nh : ["Hello", "World"].
SFTime & MFTime
Thời gian đơn lẻ hoặc một danh sách thời gian. Thời gian đợc chỉ rõ nh các số dấu
chấm động biểu thị số lợng các giây trôi qua từ nửa đêm ngày 1 tháng giêng 1970. Điều
này tạo nên nhiều cảnh quan hơn khi chú ý đến các sự kiện sau đó.
SFVec2f & MFVec2f
Các vectơ đơn lẻ hoặc danh sách các vectơ 2D. Một vectơ 2D là một cặp các số thực
dấu chấm động.
SFVec3f & MFVec3f
Các vectơ đơn lẻ hoặc danh sách các vectơ 3D. Một vectơ 3D là một bộ 3 các số
thực dấu chấm động.
3.H to trongVRML
Tất cả các khoảng cách trong VRML đợc đo bằng mét. . Hệ thống toạ độ VRML đ-
ợc chỉ ra trong sơ đồ sau:
Nguyn Vnh Thun CNPM K46
15
ho mỏy tớnh v thc ti o Ngụn ng VRML

Các phép quay trong VRML làm việc theo luật tay phải. Nếu bạn tởng tợng việc đặt
bàn tay bao trùm lên một trong số các trục, với ngón tay cái chỉ theo chiều dơng, hớng
quay dơng cùng chiều với hớng của bàn tay, nghĩa là ngợc chiều với kim đồng hồ là hớng
dơng. Điều này là đúng đối với các phép quay đối với bất kỳ trục nào, vì vậy nếu bạn
muốn quay một đối tợng một góc 90 xung quanh trục X, bạn sẽ phải sử dụng góc quay
âm 90. Điều này cũng áp dụng cho các phép quay xung quanh một trục tuỳ ý, đợc giải
thích trong phần sau của tài liệu này. Một điểm cần chú ý là các phép quay đợc đo bằng
radian chứ không đo bằng độ. Vì vậy để thực hiện phép quay nh đã mô tả ở trên, bạn phi
thực hiện phép quay -1.57 xung quanh trục X. Ta phi nh l 3.14 radian tng ng vi

trong các nút khác.
Tiếp theo chúng ta cần mô tả mỗi loại phép biến đổi làm việc nh thế nào.
a. Translation and Scale ( Phép biến đổi và tính tỉ lệ)
Có hai phép biến đổi tợng tự nhau, cả hai đều nhận ba đối số : giá trị x, y và z. Phép
biến đổi dịch chuyển trung tâm của đối tợng trong các khoảng cách này theo hớng thích
hợp. Tỉ lệ nhân với kích thớc của đối tợng bởi các giá trị này theo các hớng thích hợp.
Một phép biến đổi 0 theo một hớng sẽ loại bỏ các đối tợng không ảnh hởng đến hớng.
Yếu tố tỉ lệ 0 làm cho đối tợng không chính xác theo hớng đó, là điều bình thờng không
đợc mong muốn. Yếu tố 1 đợc yêu cầu mà không có ảnh hởng nào cả.
Quan trọng chú ý rằng việc tính tỉ lệ là tơng đối cho nguyờn bn, không phải là trung tâm
của đối tợng. Vì vậy để tính tỉ lệ của trung tâm của đối tợng, chúng ta phải đảm bảo rằng
đối tợng đợc đặt trung tâm tại phần mở đầu. Đó là lí do tại sao việc tính tỉ lệ phải thực
hiện trớc phép quay và phép biến đổi.
b. Rotation ( phép quay)
Phép quay có điểm hơi khác so với hai loại ở trên. Nó nhận 4 tham số, đầu tiên là ba
toạ độ xác định trục của phép quay và cuối cùng là góc quay, tính bằng radian. Ví dụ để
quay 1 radian xung quanh trục Y, bạn phải viết:
Transform {
rotate 0 1 0 1
children [
USE FBOX
]
}
Chiều dài của trục quay là bất kỳ, không cần thiết là 1. Bạn có thể sử dụng giá trị Y
là 50 nếu bạn thích nhng nó không thực hiện điều gì khác với giá trị Y là 1. Trục quay
hoàn toàn là tuỳ ý, bạn có thể quay quanh bất kỳ trục nào bạn thích. Ví dụ trục 1 0.3 2.45
là hoàn toàn hợp lý. Thật là khó khăn để tạo các phép quay theo cách này, tuy nhiên
chúng có thể khó khăn để quan sát, đặc biệt nếu bạn không có bất kỳ sự luyện tập nào.
Chính vì điều đó Vapour Technology đã tạo ra một cặp công cụ Dizzy và Twister. Twister
tạo phép quay vuông góc với trục từ một loại đơn giản hơn và Dizzy kết hợp nhân các

mà bạn dẫn tới hoặc từ đó sao cho nó có một tên riêng lẻ. Vì vậy, các nút TouchSensor và
Sound sẽ đợc định nghĩa:
DEF SENSOR TouchSensor {
Nguyn Vnh Thun CNPM K46
18
ho mỏy tớnh v thc ti o Ngụn ng VRML

}
DEF SOUND Sound {
}
Ngoại trừ các trờng bên trong chúng. Nếu bạn có một số các đối tợng với cùng một
tên (do sử dụng USE), và dẫn tới hoặc từ chúng, tất cả các đối tợng bị ảnh hởng, vì vậy
nếu bạn chỉ muốn một đối tợng bị ảnh hởng, đa cho nó một tên duy nhất hoặc sử dụng
PROTO, đợc giải thích sau.
7,Camera, âm thanh, ánh sáng
Trong phần này chúng tôi sẽ trình bày cách để giúp các bạn làm cho phong cảnh
của bạn trở nên hiện thực hơn. Nó bao gồm máy quay phim, ánh sáng, âm thanh, nền và
trạng thái của tất cả những yếu tố khác. Trớc hết ta hủy bỏ đi điểm khởi đầu ngầm định và
xem xét máy quay phim (camera).
a,Camera
VRMR browser tạo ra một cổng vào mặc định cho một cảnh, nó đợc đặt dọc theo
trục +Z sao cho toàn bộ thế giới đợc hiển thị trong cửa sổ. Tuy nhiên bạn không nên bắt
đầu từ vị trí này mà bạn nên để ngời quan sát có thể chọn một trong số các điểm nhìn. Để
làm đợc điều này bạn hãy đặt thêm các camera trong phong cảnh của bạn và sử dụng các
nút điểm nhìn (Viewpoint node).
Nút điểm nhìn có một số trờng, trờng thứ nhất là vị trí (position), đó là một SFVec3f
(nh một bộ ba các số thực mô tả các tọa độ X, Y, Z). Trờng này xác định vị trí của camera
trong thế giới. Trờng thứ hai là hớng (orientation), đó là một SFRolation, nó cũng gồm 3
số thực để xác định sự quay của camera. Hớng ngầm định là nhìn về hớng -Z với độ lệch
+X ở bên phải và +Y ở phía trên.

Để làm cho thế giới của bạn trở nên hấp dẫn hơn, chúng ta sẽ thêm âm thanh vào
đó. Ta có thể tạo âm thanh nền, tiếng chuông cửa, còi báo động hoặc những âm thanh
khác mà bạn muốn. Tất cả những điều đó đợc thực hiện bởi 2 loại nút là nút Sound (Sound
nodes) và nút AudioClip (AudioClip nodes). Bạn hãy tởng tợng: một nút Sound giống nh
sự xác định ở nơi nào trong không gian bạn sẽ nghe thấy âm thanh và nó bắt nguồn từ
đâu. Còn bản thân âm thanh sẽ đợc xác định bởi nút AudioClip.Trớc tiên chúng ta hãy
xem xét nút Sound.
Nút Sound:
Một nút Sound đợc sử dụng để xác định vị trí và sự định hớng của một nguồn âm
thanh trong thế giới của bạn. Nút sound đợc đặt tại một nơi nào đó. Cho dù bạn nghe âm
thanh hay bất cứ liên quan nào khác với âm thanh thì âm thanh vẫn đợc phát ra dới dạng
những mặt elipsoid .
Trong vùng màu đỏ, âm thanh sẽ đợc nghe thấy với toàn bộ cờng độ của nó. Trong
vùng màu vàng, âm thanh loãng đi theo khoảng cách đến nguồn âm. Các khoảng cách
minFront, maxFront, minBack, maxBack là các trờng đợc xác định bởi nút sound, đó là
các hớng. Cú pháp của nút Sound nh sau:
Sound {
SFVec3f direction 0 0 1
SFFloat intensity 1
SFVec3f location 0 0 0
SFFloat maxBack 10
SFFloat maxFront 10
SFFloat minBack 1
SFFloat minFront 1
SFFloat priority 0
SFNode source NULL
Nguyn Vnh Thun CNPM K46
20
ho mỏy tớnh v thc ti o Ngụn ng VRML


SFBool loop FALSE
SFFloat pitch 1.0
SFTime startTime 0
SFTime stopTime 0
MFString url []
}
Các chức năng của AudioClip nh sau: Trờng url là một danh sách các file không
nén có dạng .WAV hoặc General MIDI. MID. Điều này rất hữu ích cho việc kết hợp với
âm nhạc. Brouser sẽ trình bày file đầu tiên trong danh sách mà nó có thể load. Loop dùng
xác định xem âm thanh có đợc lặp lại không, và description là sự mô tả về âm thanh mà
Nguyn Vnh Thun CNPM K46
21
ho mỏy tớnh v thc ti o Ngụn ng VRML

brouser muốn trình bày. Pitch là hệ số tốc độ phát lại và cờng độ của âm thanh. Giá trị
pitch 1.0 là tốc độ thông thờng, giá trị pitch là 0.5 thì việc phát lại sẽ ở tốc độ bằng một
nửa. Giá trị là 2.0 sẽ cho kết quả ngợc lại, tăng gấp đôi tốc độ phát âm thanh.
StartTime và StopTime là các giá trị SFTime, chúng dùng để xác định khi nào phát
và ngừng phát âm thanh. Nếu bạn ghi nhớ một số giây kể từ ngày 1- 1- 1970 và liên kết
nó với các cảm biến và các đờng dẫn. Một cảm biến sẽ phát ra một tín hiệu báo khi đến
thời gian đợc kích hoạt, và nếu nó đợc nối với một nút AudioClip thông qua việc đặt
StartTime thì âm thanh sẽ đợc phát ra. Chúng ta sẽ xem xét thêm về điều này khi tơng tác
trực tiếp với các sensor.
Fade away
Một vấn đề nữa cần xem xét ở các nút sound là việc giải nén. Các file dạng .WAV
là quá lớn và tốn nhiều thời gian để download, vì vậy ta phải hạn chế sử dụng chúng để
tăng hiệu quả. Các file MIDI tốt hơn và tỏ ra có hiệu quả trong nhạc nền. Tuy nhiên cần
phải làm cho nó đạt độ trong (giống file .WAV) một cách tối đa có thể đợc. Nếu bạn có
các file này, chỉ cần ngắn và chất lợng đủ chấp nhận đợc, chứ không ai có thể đợi 10 phút
để download những file có chất lợng .WAV.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status