Sculpt xong rồi thì làm sao để render?

Có lẽ câu hỏi thắc mắc lớn nhất khi sau khi bạn sculpt (dựng) một nhân vật (hoặc đối tượng) nào đó trong Zbrush với vài triệu poly là: làm sao để render nó đây?

Ảnh từ phần mềm Zbrush (sau khi đã polypaint):

cvbtruong_renderTut_1

Ảnh sau khi render bằng mental ray trong Maya:

cvbtruong_Lion_statue_2013

Render là gì? 

Là kết xuất hình ảnh. Hay nói đơn giản hơn tạo ra bức ảnh (2d) (có ánh sáng, có bóng đỗ, …) từ mô hình 3d trong phần mềm 3d. Sản phẩm render có thể là video hoặc hình ảnh.

Có 2 cách:

1. Dùng BPR trong Zbrush và Photoshop (hoặc Keyshot): nếu mục đích của bạn chỉ là tạo ra 1 bức ảnh tĩnh

Vậy không có cách nào làm diễn hoạt trong Zbrush? Vẫn có, dùng timeline. Nhưng diễn hoạt trong Zbrush rất bị giới hạn, bạn phải transpose và sculpt lại gần như ở mỗi keyframe (do transpose tạo nếp gấp), không được tự do như dùng rig ở các phần mềm 3d (sau khi nhân vật đã được gắn xương, cơ bắp, …).

2. Render bằng render engine (vray, mental ray, …) trong phần mềm 3D (Max, Maya, …): nếu mục đích của bạn là làm phim/ hoạt hình hoặc đơn giản chỉ là render ảnh tĩnh.

Nhưng ít người render trực tiếp ra video bằng render engine vì tốn nhiều thời gian và phải chỉnh lại từ đầu nếu trong quá trình render có gián đoạn. Để render ra video ta sẽ render chuỗi ảnh (mỗi ảnh ở mỗi frame), sau đó tổng hợp lại (bằng phần mềm compositing: After Effects, Premiere Pro, Nuke, …) thành video. 

Bật HD để xem video rõ hơn trên Youtube (load lâu hơn):

Concept Artists, Illustrators

Dùng BPR trong Zbrush + Photoshop/ Keyshot

Quy trình: Materials > Lighting > Alpha > Compositing

Tutorial tiếng Anh: link link

Bài hướng dẫn:

[updatinggggggggggggggggggg…………………… đang viết……………………]

Bạn cũng có thể dùng Keyshot (thay cho BPR trong Zbrush): link

* Keyshot’s Youtube Channel: link

3D Artists

Render bằng render engine (mental ray, Vray, Renderman, …)

Phần mềm dùng để minh họa: Zbrush 4r4, Maya 2012, mental ray (trong Maya)

Quy trình: Retopology > Paint > UV > Maps > Render Setup (> Render Animation)

Bước 1: giảm poly count

* Cách 1: Bằng Decimation Master + Keyshot

* Video hướng dẫn: link

* Keyshot’s Youtube Channel (tiếng Anh): link

* Nếu dùng cách này, bạn nhảy đến bước 5.

* Cách 2: Bằng Retopology (đi lưới lại)

2.a. Retopology tự động bằng QRemesher (dành cho đối tượng không chuyển động)

Video hướng dẫn: link

Video tiếng Anh: link

2.b. Retopology thủ công (nhân vật hoạt hình)

Dùng Topology Brush: 

Bước 1: Duplicate Subtool nào bạn muốn đi lưới lại

Tr duplicate subtool hòn đá, tắt con mắt bên phải subtool gốc để nó ẩn đi, chỉ làm việc với subtool hòn đá đã dublicate:

cvbtruong_renderTut_2

Bước 2: Bật Topology Brush. Nhấn B > nhấn T, chọn Topology

cvbtruong_renderTut_3

Khi vẽ lên đối tượng bạn sẽ nhận được thông báo, đối tượng có nhiều subdivision:

cvbtruong_renderTut_4

Bạn vào Geometry > Del Lower (hoặc Del Higher, nếu có)

cvbtruong_renderTut_5

Khi bạn vẽ các đường cắt nhau, nó sẽ tạo ra polygon

cvbtruong_renderTut_6

Nhấn Alt và quét chuột trái qua cạnh nào bạn muốn xóa, còn nếu muốn xóa toàn bộ các cọng rìa rìa, bạn quẹt Alt + kéo chuột trái lên đối tượng nhưng không đi qua cạnh nào cả (ví dụ vị trí con trỏ chuột ở hình trên).

Khi bạn đã hoàn toàn toàn bộ thì click chuột trái vào đối tượng.

cvbtruong_renderTut_7

Đối tượng mới được tạo ra, dựa trên kích cỡ của brush (Draw Size), nếu bạn không muốn nó có bề dầy, thì chỉnh Draw size xuống 1 (nhấn Ctrl + Z trước để trở lại với lưới khi nãy).

cvbtruong_renderTut_8

Vì nó quá mỏng, nên đôi khi nó bị lún sâu vào trong (thậm chí không thấy). Bạn vào Subtool, chọn Split Similar Parts

cvbtruong_renderTut_9

Xong, bạn tắt subtool chứa đối tượng high poly đi, sẽ thấy đối tượng low poly mình đã tạo:

cvbtruong_renderTut_10

Tuy nhiên, khi sử dụng topology brush có một vấn đề bạn cần chú ý là nó sẽ tự tạo các cạnh chặn để giữ hình dáng của polygon, thường thì các cạnh chặn phù hợp với hardsurface (robot, xe, …), nhưng nếu bạn làm nhân vật/ tượng thì nên xóa nó đi.

cvbtruong_renderTut_11

Vào Geometry > Crease > UnCreaseAll. Còn nếu bạn muốn tạo hardsurface thì làm ngược lại, Crease phần nào bạn muốn tạo hardsurface (phải kết hợp với sử dụng polygroup).

cvbtruong_renderTut_12

Sau đó bạn project detail của đối tượng high poly lên low poly, như tut QRemesher Tr đã đề cập. Chú ý, trong tut QRemesher Tr subdivide vài lần rồi mới nhấn Project All, nhưng Tr khuyến khích Project All từ từ, nghĩa là Project All ngay ở low poly, sau đó subdivide, rồi Project All, rồi subdivide … Làm như vậy thì chi tiết sẽ project tốt hơn.

Điểm yếu của Topology Brush so với Topogun hoặc đi lưới bằng cách cũ sử dụng Zsphere là khi bạn không vừa ý phải xóa đoạn đó, làm lại (dùng Alt), không có khả năng chỉnh vertex, cạnh hay mặt. Dùng Topogun sẽ tự do hơn (nhưng hơi chậm hơn).

Dùng Topogun: link link (trong video Tr nói thiếu phần này: bạn nhấn Shift khi muốn vẽ điểm lên giữa cạnh)

Kiến thức về topology/ đi lưới dành cho diễn hoạt: link link link

Video Modeling for Animation (tiếng Anh): link link link

Video tiếng Anh:

Topology Brush trong Zbrush: link

Topogun: link

2.c. Lên màu

Khi lên màu, bạn Clone Standard Brush trước, để khỏi lầm lẫn với brush cũ, và đôi khi cũng cần dùng Standard Brush khi paint, nếu muốn chỉnh lại setup cũ thì tốn thời gian, do đó Clone là tốt nhất.

cvbtruong_renderTut_13

Brush Standard_1 vừa tạo ra, bạn tắt Zadd, bật Rgb

cvbtruong_renderTut_14

Chuyển Dots sang Color Spray

cvbtruong_renderTut_15

Chuyển Alpha Off sang loại Alpha 07

cvbtruong_renderTut_16

Giờ chỉ còn chọn màu ở bảng màu và tô vẽ.

Tại sao phải cài đặt brush như vậy? Để tạo độ sâu màu sắc (layer chồng layer) + độ chuyển sắc tự nhiên.

Muốn copy màu? Bạn đưa chuột đến vùng màu muốn copy, nhấn C

Video tiếng Anh: link

Bước 2: UV

  • UV bằng UV Master trong Zbrush

Tr có nói về sử dụng UV Master trong Zbrush ở bài sử dụng Topogun: link link

Nhưng có vài điều Tr chưa đề cập:

Nếu muốn chia đối tượng ra trên UV thì phải làm sao?

Sử dụng polygroup, Tr có nói về cách polygroup trong bài giới thiệu về Fiber Mesh: link

Sau khi đã có polygroup thì khi bạn vào UV Master, bật Polygroup lên:

cvbtruong_renderTut_17

Muốn thay đổi vị trí của từng phần trên UV thì làm sao?

Vào Brush > Auto Masking > tăng Mask by Polygroups lên 100

cvbtruong_renderTut_18

Làm như vậy để khi bạn chuyển sang Transpose để di chuyển các phần, thì những phần lân cận không bị ảnh hưởng:

cvbtruong_renderTut_19

Hướng dẫn sử dụng Transpose: link

Video tiếng Anh: link link link

  • UV bằng Maya (nếu bạn đã UV trong Zbrush rồi thì không cần làm lại trong Maya nữa, đây chỉ là lựa chọn thứ 2 cho UV)

Video tiếng Anh: link link

Bước 3: Xuất maps + Tác dụng của từng loại maps

Tr sử dụng 3 loại maps chính sau: color (hoặc gọi là texture), displacement, normal

  • color: màu sắc chủ đạo
  • displacement: tạo khối trên đối tượng low poly
  • normal: tạo chi tiết nhỏ

Khi bạn muốn làm các đối tượng trông thực hơn hoặc kiểm soát kết quả render tốt hơn thì ta có thể dùng thêm nhiều map khác: diffuse, specular, AO, … Nhưng trong trường hợp này, 3 maps (có lẽ) đã đủ.

Bước 1: Subtool > All High

cvbtruong_renderTut_20

Bước 2: Vào UV Map > 4096 (hoặc size nào mà bạn muốn)

cvbtruong_renderTut_21

Bước 3: Vào Texture Map > New from Polypaint, và làm tương tự với tất cả Subtool mà bạn có:

cvbtruong_renderTut_22

 Bước 4: Vào lại Subtool > All Low

Bước 5: Vào Displacement Map, chọn Alpha nào cũng được, bật Mode lên. Sẽ thấy đối tượng bị biến dạng rất kì cục, nhưng bạn đừng bận tâm. Chỉnh thông số như trong hình, sau đó nhấn Create DispMap:

cvbtruong_renderTut_23

Làm tương tự với tất cả subtool còn lại.

* Lưu ý: nếu bạn không chọn Mode, kết quả tạo ra sẽ là bump map, chứ không phải displacement map.

Bước 6: Vào Geometry, giảm subdivision xuống một (hoặc 2) nấc so với subdivision cao nhất (vì Normal map chỉ cần chi tiết nhỏ, nên không cần tạo normal map từ subdivision nhỏ nhất)

cvbtruong_renderTut_24

Bước 7: Vào Normal Map và chỉnh cài đặt như trong hình và nhấn CreateNormalMap

cvbtruong_renderTut_25

Làm tương tự với các subtool còn lại.

Video tiếng Anh: link link link link link link

Bước 4: GoZ

Sau khi đã có đầy đủ 3 maps ở tất cả các Subtools, bạn vào Tools > All (bên phải GoZ, nghĩa là GoZ tất cả các Subtools cùng lúc)

cvbtruong_renderTut_26

Sau khi nhấn All, bạn sẽ nhảy sang Maya. Nếu bạn chưa biết cơ bản về render trong Maya thì bạn có thể xem các tut của anh Sil:

Lighting: link link link

Rendering: link link

Trước khi đi vào render setting, bạn phải set project, chọn folder nào mà bạn muốn tất cả file ma/mb và maps (đã xuất từ Zbrush) sẽ đặt vào:

cvbtruong_renderTut_30

Sau khi đã set project và save file ma/mb của bạn vào đó, bạn vào ổ C > Users >Public > Pixologic > GoZProjects > Default, và copy toàn bộ maps mà bạn đã tạo từ Zbrush khi nãy và paste vào folder bạn vừa set ở trên.

cvbtruong_renderTut_31

Vào Hypershade:

cvbtruong_renderTut_32

Graph Network. Chọn File trong mỗi kênh, ví dụ Displacement Map:

cvbtruong_renderTut_33

Thay file đó bằng file bạn đã copy vào folder, Image Name > click hình folder:

cvbtruong_renderTut_34

Kết quả sẽ là những đường dẫn tương đối, không phải đường dẫn tuyệt đối (C> Folder 1 > …)

cvbtruong_renderTut_35

Làm tương tự với Normal map và Texture.

Tại sao phải làm vậy? Khi bạn gửi Model đi, bạn sẽ nén folder này lại và gửi đi, và mọi thứ đã được setup, người dùng (rigger chẳng hạn) không phải setup lại hoặc không tìm được maps (do bạn quên copy paste vào).

Video tiếng Anh:

GoZ: link (3Ds Max), link (Maya)

Bước 5: Render

 

Trước khi đi vào render setting bạn chọn đối tượng (meshes), Normal > Soften Edges (để khi render không xuất hiền viền gấp khúc) nên áp dụng khi bạn render đối tượng có organic surface (bề mặt dạng sinh học):

cvbtruong_renderTut_36

Render bao gồm 5 món: Maps Attribute (thuốc tính của các maps), Lights (đèn), Environment (môi trường), CameraRender Setting. Những món này có liên quan lẫn nhau, nên bạn theo dõi theo thứ tự, Tr không chia ra từng phần riêng để đề cập được.

Phần xuất đối tượng, xuất map và thông số của maps thì GoZ đã làm gần hết cho bạn rồi. Trong đó có Approximation Editor (chỉnh mức độ subdivide của đối tượng khi render), Alpha Gain trong Displacement Map (trước đây phải chỉnh thủ công từng số, render thử đi thử lại nhiều lần để có kết quả render như ý).

Approximation Editor:

cvbtruong_renderTut_40

Khi bảng Approximation Editor hiện ra, bạn chọn đối tượng để biết GoZ đã cài đặt Approximation cho bạn như thế nào, Tr chọn con sư tử:

cvbtruong_renderTut_41

bạn sẽ thấy là GoZ đang sử dụng Subdivisions: mentalraySubdivApprox1, nếu bạn muốn chỉnh thì nhấn Edit (không chỉnh cũng được). Bạn không cần đọc những dòng sau nếu bạn không muốn chỉnh.

Bạn có thể thay các thông số thành:

Approx Method: Spatial

Min Subdivisions: 0

Max Subdivisions: 6

Length: 0.5

Max bằng 6 và length 0.5 nếu bạn muốn lấy thật nhiều chi tiết từ Displacement Map, còn nếu bạn giảm xuống để render nhanh hơn thì đặt bằng

Max Subdivisions: 5

Length: 1

Và kết hợp sử dụng Normal map hoặc (và) Bump map.

Về Alpha Gain, bạn bật Attribute của Displacement Map, Alpha Gain và Alpha Offset đã được GoZ đặt giúp bạn.

cvbtruong_renderTut_42

 

Một lưu ý nữa, bạn set bump2d của normal map sang tangent để tránh noise của normal map:

tangent

LINEAR WORKFLOW = MAPS ATTRIBUTE + CAMERA + RENDER SETTING

Linear workflow chính là gamma correction. Để giải thích cặn kẽ thì sẽ rất phức tạp (tiếng Anh: link link link link), do đó Tr sẽ tóm gọn như sau .

Hình ảnh bạn xem trên màn hình máy tính hầu hết đã bị chỉnh gamma (trừ một số định dạng file không bị chỉnh gamma), tạm dịch: làm cho sáng hơn để có thể nhìn được trên màn hình. Do đó, khi sử dụng những hình ảnh này làm texture, thì màu sắc của bức ảnh render cuối cùng sẽ bị sáng hơn khi render (do bị tăng gamma thêm lần nữa). Dù có chỉnh độ sáng của maps … thì hình ảnh vẫn trông rất giả vì vấn đề nằm ở gamma của ảnh, chứ không phải ở brightness.

Linear workflow chính là: ra thẳng hình ảnh cuối, không chỉnh gamma thêm lần nữa, để tạo hình ảnh trung thực.

Maya 2011 (trở lên) đã khiến linear workflow trở nên dễ nuốt hơn, bạn vào Render Setting > Common. Enable Color Management: check.

cvbtruong_renderTut_43

Như vậy là ảnh xuất hiện sẽ không có bất cứ Gamma Correction nào cả, dẫn đến kết quả là hình sẽ hơi tối. Các phần mềm compositing như Nuke làm việc rất hiệu quả với loại hình ảnh này (ảnh không bị gamma correct), nhưng sản phẩm cuối cùng bạn muốn là tạo ra ngay từ Maya, nên bạn cần phải tạo một camera mới. Vào attribute của camera: mental ray > Lens Shader > tìm mental ray > Lenses > mia_exposure_simple

cvbtruong_renderTut_37

Chỉnh thông số lense như sau:

cvbtruong_renderTut_44

Ok, camera như vậy đã setup xong, bây giờ khi render bằng camera này thì kết quả ảnh của bạn sẽ trông rất thực.

Tuy nhiên có một vấn đề, khi chỉnh color managment ở render setting như trên, thì mọi thông tin input và output sẽ đều theo thuộc tính đó, nhưng những loại map như displacement, normal, bump không có RGB channels, nên bạn sẽ thấy xuất hiện uv seams khi render. Để chỉnh, bạn vào từng loại map đó (disp, normal, bump) chỉnh lại như sau:

Chuyển Use Default Input Profile sang Linear sRGB và Filter Type: Off

cvbtruong_renderTut_45

Còn về môi trường, Tr chỉ tạo miếng plane và bẻ cong phần sau lên để tạo nên bức tường + mặt đất. Bạn cũng có thể tạo thêm khối cầu lớn bao quanh, và dùng HDR để có reflection trông thực hơn nữa (link), nhưng trong bài này Tr không dùng.

cvbtruong_renderTut_46

* Ghi chú: ở camera view, Tr dùng Caustic Visualizer, một dạng render realtime, bạn dùng nó thì không cần phải nhấn render để biết kết quả mỗi lần chỉnh thông số. ;)

Lights (đèn): 

* Trước khi đặt đèn, bạn vào Render Setting > Common > Render Options > Tắt Enable Default Light.

Đèn chính (main light): Area Light

Color > mental ray > mib_blackbody (hoặc mia_cie_d) (tại sao phải dùng loại đèn này? Ánh sáng trung thực hơn)
Temperature: 4500 (warm light) (càng tăng ánh sáng càng lạnh)
Intensity 0.4 (cường độ sáng)
Shadow: Raytrace
mental ray: use light shape (rectangle) (hình dạng nguồn sáng)
High Samples: 32
High Sample Limit: 4 (giảm hạt nhiễu)
Low Samples: 1

Đèn sau lưng (back light): Spot Light

Spot Light: intensity: 2
Penumbra Angle -20/-15 (nhòe viền)
Raytrace Shadow: Radius (soften): 0.25

Bạn có thể đặt thêm bounced light, nhưng Tr thấy có chút shadow nhìn sẽ đẹp hơn nên không dùng.

Những thông số trên ok với scene của Tr, nếu bạn thấy có gì không ổn thì chỉnh lại cho phù hợp với scene của mình.

Và đây là một số thông số Render Setting:

Bật Maya Derivatives để render Normal Map

cvbtruong_renderTut_47

cvbtruong_renderTut_48

cvbtruong_renderTut_49

Và cuối cùng là chỉnh size thật bự để render (khi test render phải để size nhỏ để giảm thời gian render):

cvbtruong_renderTut_50

Thêm một chút DOF nếu bạn muốn: link

Save file kết quả .psd để sang Photoshop chỉnh vài thao tác cuối:

cvbtruong_renderTut_51

Video tiếng Anh: link (linear workflow Maya 2011)

Nếu bạn muốn render animation thì setup render tương tự như trên, chỉ chú ý thay đổi tên file ảnh sau khi render, đặt frame mở đầu và frame kết thúc, đặt địa chỉ lưu file và chọn Batch Render: link.

Bước 7: Final compositing (Photoshop)

 Bí quyết nằm ở: Auto Contrast, Auto Tone

cvbtruong_renderTut_52

Một chút Effect:

cvbtruong_renderTut_53

Grain 1

Intensity 1

Và bạn đã có một bức ảnh hoàn thiện. Chúc thành công!

Nếu bạn có thắc mắc nào thì cứ hỏi Tr ở phần Hỏi Đáp Zbrush hoặc Maya hoặc ngay tại bài này.

cvbtruong_renderTut_54

cvbtruong

Về Truong
CG Artist

16 Responses to Sculpt xong rồi thì làm sao để render?

  1. Pingback: Hỏi và Đáp: Zbrush « Truong's blog

  2. nam nói:

    thanks Truong !!!!
    Dang mong doi loat bai nay cua Tr,

  3. hay quá em cũng đang thắc mắc ngay khúc này

  4. Pingback: Hỏi và Đáp: Thắc mắc chung về đồ họa « Truong's blog

  5. leonguyen92 nói:

    lại biết thêm đc 1 thứ mới keyshot :D thank a trường

  6. Pingback: Quy trình: Đem chi tiết từ Zbrush sang Unity « Truong's blog

  7. Phú nói:

    Mong có thêm nhiều video hướng dẫn của Trường

  8. Joseph Tran nói:

    Nếu nặn mà dùng để animation thì phải bắt buộc đi lưới lại hả bạn ? Với làm sao lúc mình rig low-res mà render ra high-res thì phải làm sao bạn biết ko chỉ mình với ?

    • Truong nói:

      1) Muốn làm diễn hoạt (hoạt hình/ animation) thì chắc chắn phải đi lưới lại. Hoặc dựng nhân vật bằng Maya (hoặc 3Ds Max, Blender, … hoặc những phần mềm modeling khác) để có lưới đẹp trước rồi mới xuất sang Zbrush để lên chi tiết.

      2) “Rig low-res mà render ra high-res” -> rigging đâu có liên quan gì đến render đâu. Để render ra high-res thì từ bước 2 Tr đã hướng dẫn rồi đó (UV > Maps > Render). Rigging làm trước hay sau đều được, miễn là có low-res model.

      Sau khi đã rigging thì hãy làm diễn hoạt và setup render như sau là render được animation: https://cvbtruong.wordpress.com/2011/08/20/h%C6%B0%E1%BB%9Bng-d%E1%BA%ABn-render-b%E1%BA%B1ng-mental-ray/

      Nếu bạn có gì chưa rõ thì hãy hỏi lại và hỏi dài dài ra, ghi ngắn quá Tr không hiểu được.

  9. Joseph Tran nói:

    À ý mình là mình có 2 model, 1 là high poly 1 là low poly, mình rig model low-res rùi animate cái low-res rig đó, rùi làm sao mình chuyển được những cái chuyển động của cái model low-poly đó sang high-poly để mà render ra cho đẹp, hay là mình có thể dùng map (displace,normal) để giả chi tiết ? :D cám ơn

    • Truong nói:

      “hay là mình có thể dùng map (displace,normal) để giả chi tiết” -> chính xác là vậy :D

      Trong bài này (Sculpt xong rồi làm sao để render) Tr hướng dẫn làm sao để render đối tượng low res mà vẫn thấy được chi tiết của đối tượng high res đúng không nào? (Hay là bạn vẫn chưa hiểu bước nào thì hỏi lại).

      Nghĩa là, kể từ khi có model low res (và các maps), thì bạn vứt model high poly cũng được, không cần quan tâm đến nó. Mọi vấn đề render, rigging, animation, … đều diễn ra với đối tượng low res (low resolution/ low polygon/ ít poly).

  10. TruongThi nói:

    cho hoi nhe. Khi tao ra 1 model tu ZB roi. mih muon lam repolotogy. nhung khi append Zphere no ko bat vao tam model cua minh. lam cach nao de cho no bat vao tam model de~ khi minh thuc hien thao tac repolotogy cho can bang 2 ben model.

  11. Anh cho em hỏi: em làm với trình tự khác ntn:
    1/ Làm model low poly trên Maya ( nhân vật để diễn hoạt, đi lưới để anim và gắn xương)
    2/ Xuất OBJ qua Zbrush để sculpt chi tiết ( vẽ tóc, quần áo, phụ kiện và polypaint)
    Em làm xong thì đang bí bước 3: xuất lại Maya qua GoZ để anim, render
    Anh có thể chỉ em xuất các maps cần thiết để render bằng mental ray được như ý ko? Thanks a.

    • Truong nói:

      Nếu bạn không rõ cách dùng GoZ thì đây là cách thủ công để làm:

      Sau bước thứ 2 bạn đã uv chưa?

      Nếu uv rồi thì xuất obj file từ Zbrush (Tool > Export)
      Import file obj này vào Maya, xóa file làm ở bước 1 đi, vì file ở bước 1 chưa có uv. Nếu bạn muốn giữ thì phải copy uv qua. Mesh > Transfer Attribute, check vào UV

      Cách xuất map thì tương tự như trong bài trên. Sau đó bạn lấy những map này và link vào material bạn đang dùng là được.

      Nếu bạn gúc mắc chỗ nào thì cứ hỏi lại.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: