• Trang Chủ
  • Kiến Trúc
  • Nội Thất
  • Đồ Họa
  • Phần Mềm
  • Tài Liệu
  • Giải Trí
  • Khác
No Result
View All Result
  • Trang Chủ
  • Kiến Trúc
  • Nội Thất
  • Đồ Họa
  • Phần Mềm
  • Tài Liệu
  • Giải Trí
  • Khác
No Result
View All Result
Đặng Tiến Dũng
No Result
View All Result

MAXScript cơ bản cho người mới – phần 4

07/01/2024
in Phần Mềm
Reading Time: 8 mins read

Trong phần này, chúng ta sẽ làm quen với tính năng Macro Recorder. Đây là một tính năng có sẵn trong 3ds Max, dùng để theo dõi và chuyển những hành động của người dùng trong 3ds Max thành MAXScript. Nó giúp giảm thời gian tra cứu từ khóa và làm công việc phát triển script trở nên dễ dàng hơn.

Nhìn chung, Macro Recorder có thể bắt được phần lớn các hành động trong 3ds Max. Tuy nhiên, có một vài nơi mà chúng có thể không bắt được:

  • Các nút bấm, tính năng, bảng biểu từ script hoặc plugin thứ 3.
  • Nếu các nút bấm tạo cửa sổ thứ 2, thay đổi trong cửa sổ này sẽ không được ghi lại.
  • Các đối tượng và chức năng không được hỗ trợ trong phần Create & Modify.
  • Một vài chức năng khác chưa được Autodesk cập nhật.

Vì MAXScript hỗ trợ việc kéo thả code vào thẳng toolbar để tạo nút bấm mới, nên bạn có thể dùng Macro Recorder để ghi lại một chuỗi các hành động, sau đó quét tất cả code, và kéo thả chúng lên thanh công cụ. Một nút bấm sẽ được tạo ra nếu làm đúng cách. Khi bấm nút này, nó sẽ thực hiện lại chuỗi hành động mà bạn đã ghi trong Macro Recorder.

Ở đây, tôi sẽ trình bày cách kích hoạt và sử dụng Macro Recorder cơ bản. Sau đó chúng ta có thể ứng dụng tùy biến những dòng lệnh nhận được từ nó để phát triển script cho riêng mình. Cuối bài, tôi cũng sẽ hướng dẫn cách ứng dụng thực tế Macro Recorder để tạo ra một script đơn giản và thực dụng.

MỤC LỤC

  • Kích hoạt Macro Recorder
  • Tùy biến lệnh từ Macro Recorder
  • Sử dụng MAXScript Help
  • Sử dụng Block Comment
  • Ứng dụng để viết 1 script đơn giản
  • Bài tập ứng dụng

Kích hoạt Macro Recorder

Đầu tiên, hãy mở 3ds Max lên và setup lại giao diện làm việc. Nếu bạn chưa quen thuộc với setup này, xin hãy xem lại phần 1 của seri bài viết. Lần này, kích hoạt thêm Macro Recorder để làm việc. Hãy nhìn lên thanh menu của MAXScript Listener. Chọn MacroRecorder > Enable để kích hoạt tính năng này.

Cách kích hoạt MacroRecorder trong bảng MAXScript Listener.

Sau khi kích hoạt, quay lại viewport của 3ds Max vào tạo thử một khối box với kích thước bất kỳ. Nhìn vào cửa sổ MAXScript Listener, nếu đã kích hoạt Macro Recorder, bạn sẽ thấy một dòng lệnh hiện lên như hình dưới. Đây chính là thao tác bạn mới thực hiện.

Dòng lệnh hiện lên trong khi và sau khi bạn tạo khối box.

Hãy thử với nhiều lệnh khác nhau. Bạn sẽ thấy danh sách Macro Recorder ngày càng dài ra. Để xóa chúng, chọn tất cả và bấm Backspace / Delete, hoặc cách nhanh hơn là click vào bất kỳ điểm nào, chọn Edit > Clear All, phím tắt là Ctrl + D.

Tùy biến lệnh từ Macro Recorder

Vẫn ở trong ví dụ trên, hãy chép lại dòng đầu tiên vào MAXScript Editor bên dưới. Vì lý do học tập, nhớ là chép tay, đừng copy nhé. Bạn sẽ thấy dòng lệnh được bôi màu tùy theo thông số và từ khóa.

Sau khi copy bạn sẽ thấy các từ khóa và thông số được bôi màu khác nhau.

Khác với lệnh Box() ở trong phần 3, lệnh Box này đã có thêm các thông số phía sau. Chúng được bôi màu tím, lần lượt là pos (vị trí), isSelected (có được select hay không), width (rộng), length (dài), height (cao). Tiếp tục lần chép lệnh này xuống dòng dưới, và cùng thử nghiệm thay đổi chúng một chút. Ví dụ, chỉnh sửa thành:

Box pos:[0,0,0] isSelected:off width:150 length:150 height:150

Lệnh trên sẽ tạo một khối box ở gốc tọa độ, với kích thước 150x150x150, và không được chọn. Bạn hãy thử với thông số của riêng mình để xem kết quả.

Sử dụng MAXScript Help

Các từ khóa trong MAXScript thường rất dễ hiểu, vì thế bạn có thể chỉnh sửa ngay trên code nhận về từ Macro Recorder để xem kết quả. Tuy nhiên, nếu cần thêm thông tin về các từ khóa và câu lệnh, hãy tra cứu MAXScript Help của Autodesk.

Một số thông số khác của khối box.

Trong ví dụ về khối Box phía trên, sau khi tra cứu, tôi có thêm các từ khóa như lengthsegs, widthsegs, heightsegs vào sau lệnh box để điều chỉnh thông số segment của khối box.

Việc tra cứu này là một kỹ năng quan trọng giúp bạn có thể nhanh chóng học hỏi từ nó. MAXScript Help cũng là tài liệu đáng tin cậy và đầy đủ nhất đến thời điểm hiện tại, và đến giờ tôi vẫn dùng nó hằng ngày khi phát triển các công cụ của mình.

Sử dụng Block Comment

Bây giờ, nếu chạy tất cả những lệnh chúng ta vừa viết, nó sẽ tạo ra 2 khối box, một khối box chính xác theo Macro Recorder gốc, và một khối box khác theo chỉnh sửa của chúng ta.

Nếu muốn chỉ sử dụng lệnh đã chỉnh sửa, bạn có 2 cách. Đơn giản nhất là xóa dòng lệnh đầu tiên từ Macro Recorder đi. Cách thứ hai là thêm thêm dấu “–” (2 dấu gạch ngang) vào phía trước lệnh đầu tiên. Toàn bộ dòng lệnh sẽ chuyển thành màu xanh lá, và nó sẽ không chạy khi Evaluate script.

Đặt con trỏ chuột vào bất kỳ vị trí nào trên dòng đầu tiên và bấm Ctrl + Q.

Hành động này gọi là block comment. Nó dùng để chèn các dòng bình luận vào giữa code, nhằm phục vụ mục đích diễn giải và ghi chú cho script. Những dòng comment sẽ bị 3ds Max bỏ qua khi Evaluate script. Nút tắt cho hành động này là Ctrl + Q. Có 2 hành động khác tương tự được gọi là box comment và stream comment, tôi sẽ trình bày trong các bài viết sau.

Với người mới, tốt nhất là bạn không nên xóa những lệnh gốc từ Macro Recorder đi. Nếu muốn chỉnh sửa, hãy copy chúng xuống và block comment dòng lệnh gốc. Lý do là khi mới bắt đầu viết MAXScript, bạn rất dễ bị sai các syntax vì chưa quen với việc code. Vì thế việc giữ lại các lệnh gốc từ Macro Recorder sẽ giúp bạn có mẫu đối chiếu nhanh khi gặp lỗi.

Tất nhiên, sau khi đã quen thuộc với MAXScript, bạn có thể trực tiếp chỉnh sửa chúng mà không cần phải giữ lại lệnh gốc nữa.

Ứng dụng để viết 1 script đơn giản

Đây là một script tôi đã từng chia sẻ trên trang Facebook cá nhân. Nó dùng để xoay vật thể đang chọn một góc 90 độ. Lý do tôi viết script này là bởi tôi muốn giữ Snap Angle là 5 độ thay vì 45 hay 90 độ. Nó giúp tôi linh hoạt hơn khi muốn xoay các góc 15, 30 hay 45 độ. Hơn nữa, tôi có thể đặt nút tắt cho việc xoay 90 độ này nếu biến chúng thành script.

Hãy Clear All (phím tắt Ctrl + D) bảng MAXScript Recorder đi. Chúng ta sẽ chọn một vật thể bất kỳ trong 3ds Max. Sau đó bấm lệnh xoay (E), và xoay nó một góc bất kỳ.

Ở đây tôi đã xoay theo trục Z một góc là -105,882 độ.

Chép lệnh trên xuống MAXScript Editor. Chỉnh sửa nó thành:

rotate $ (angleaxis 90.000 [0,0,1])

Sau đó lưu script này lại thành lệnh Z90.ms. Khi chạy script này, nó sẽ xoay những gì đang chọn một góc 90 độ theo trục Z. Bạn cũng có thể chỉnh nó thành góc 45 độ nếu muốn.

Như đã nói ở trên, bạn cũng có thể biến nó thành nút bấm hoặc phím tắt nếu muốn. Ctrl + A để chọn tất cả code, sau đó kéo thả lệnh này vào thanh công cụ của 3ds Max. Nút bấm này có thể truy cập trong Customize User Interface > Category: DragAndDrop > MacroX (x là số thứ tự). Lúc này script của bạn đã trở thành 1 Macro Script, và bạn có thể gán nút tắt cho nó. Tôi đặt nút tắt cho lệnh này là nút mũi lên lên ↑.

Tuyệt vời. Bạn đã tạo ra một script mới mà thậm chí không biết một từ khóa nào trước đó.

Bài tập ứng dụng

Đây là bài tập của bạn lần này. Kết hợp với các kiến thức đã học ở bài trước để bắt đầu viết một script có giao diện gồm nhiều nút bấm, mỗi nút bấm sẽ xoay vật thể đang chọn sang một góc khác nhau. Lưu ý là nhớ sử dụng function ở phần 3 để cho code không dài dòng nhé.

Chúc các bạn thành công!

Bài Viết Liên Quan

Vì sao SketchUp lại thích hợp cho concept?
Phần Mềm

Vì sao SketchUp lại thích hợp cho concept?

20/05/2025
33
Incremental Saves trong SketchUp
Phần Mềm

Incremental Saves trong SketchUp

28/04/2025
61
Cách để trích xuất map gốc từ ảnh texture seamless
Phần Mềm

Cách để trích xuất map gốc từ ảnh texture seamless

24/04/2025
475

Comments 7

  1. don le says:
    1 năm ago

    chào anh, có cách nào để tránh sai số khi áp lệnh xoay ko ạ, E thư áp lệnh xoay 45 độ vào nút mà khi ấn liên tục khoảng gần 10 lần gì đố là nó tự nảy một số lẻ đi 0,001 tiếp tục ấn thì nó sẽ lẻ đi 0.002

    Trả lời
    • Đặng Tiến Dũng says:
      1 năm ago

      Không có cách nào đơn giản em ạ, hoặc anh chưa biết tới. Đây là vấn đề của lập trình rồi. Bởi lệnh biến đổi nào trong 3ds Max cũng đều tính toán dựa trên việc cộng trừ nhân chia các số thực (float), nên khi chạy nó sẽ tạo ra sai số. Từ khóa em có thể tra cứu về vấn đề này là “dấu phẩy động – floating point”. Chúng ta đành phải chấp nhận với sai số này.

      Trả lời
      • don le says:
        1 năm ago

        xoay thủ công bằng chuột đặt bắt điểm góc là 45 độ thì xoay bao nhiêu vòng cũng xuất hiện sai số mà đặt lệnh xoay lại xuất hiên sai số, sai số nhỏ này thì cũng ko sao cả nhưng nhìn mấy con số lẻ thật khó chịu

        Trả lời
        • Đặng Tiến Dũng says:
          1 năm ago

          Xoay bằng chuột đủ nhiều nó vẫn sẽ ra số lẻ đó em ạ. Em thử xoay vài chục vòng sẽ thấy. Anh nghĩ có 1 cách tạm khắc phục là dùng function làm tròn số. Nhưng ở bài viết này nó có lẽ hơi phức tạp.

          Trả lời
  2. don le says:
    1 năm ago

    một câu hỏi e muốn hỏi anh là khi e áp một lệnh xoay bằng scrip lên đối tượng nhưng tại sao ctrl z lại nó lại ko hoàn lại vị trí cũ ạ, e thử toạ một nút chuyển sang chế độ edit và ctrl z cũng ko hoàn tác đc ạ

    Trả lời
    • Đặng Tiến Dũng says:
      1 năm ago

      Anh cũng không rõ về lỗi này của em. Nhưng em có thể thêm từ khóa “undo on” phía trước lệnh để thử xem. Ví dụ với script xoay: “undo on rotate $ (angleaxis 90.000 [0,0,1])”. Lúc này nó nên undo được bình thường.

      Trả lời
      • don le says:
        1 năm ago

        cảm ơn anh, e đã undo lại đc rồi ạ

        Trả lời

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Nhiều lượt xem

Tổng hợp lisp nhỏ cho AutoCAD

Tổng hợp lisp nhỏ cho AutoCAD

17/05/2024
11.8k
Tổng hợp script nhỏ cho 3ds Max

Tổng hợp script nhỏ cho 3ds Max

27/02/2024
5.4k
Hiệu ứng phác thảo cho bản vẽ AutoCAD

Hiệu ứng phác thảo cho bản vẽ AutoCAD

19/03/2024
3.8k
Kiếm tiền từ bán model trên 3dsky

Kiếm tiền từ bán model trên 3dsky

25/03/2024
2.7k
Khắc phục lỗi AutoCAD bị treo khi sửa chữ

Khắc phục lỗi AutoCAD bị treo khi sửa chữ

15/02/2024
2.5k

Mới chỉnh sửa

Tổng hợp thông tin về các script & plugin trên d95design.com

Tổng hợp thông tin về các script & plugin trên d95design.com

20/09/2024
1.1k
Phác thảo và vẽ tay

Phác thảo và vẽ tay

10/06/2025
11
Khoe hợp đồng

Khoe hợp đồng

30/05/2025
12
Luyện vẽ

Luyện vẽ

29/05/2025
9
Phác thảo bằng SketchUp

Phác thảo bằng SketchUp

20/05/2025
33

Bài ngẫu nhiên

Phân biệt 12 vị thần Olympian

Phân biệt 12 vị thần Olympian

02/04/2024
178
Hướng dẫn sử dụng Smart Merge

Hướng dẫn sử dụng Smart Merge

25/11/2023
541
Trần coffered trong thiết kế nội thất

Trần coffered trong thiết kế nội thất

28/12/2023
291
Incremental Saves trong SketchUp

Incremental Saves trong SketchUp

28/04/2025
61
Ý nghĩa phần “vểnh” ra phía trên của phào khuôn cửa cổ điển

Ý nghĩa phần “vểnh” ra phía trên của phào khuôn cửa cổ điển

23/11/2023
204

Bài mới nhất

Phác thảo và vẽ tay

Phác thảo và vẽ tay

10/06/2025
11
Khoe hợp đồng

Khoe hợp đồng

30/05/2025
12
Luyện vẽ

Luyện vẽ

29/05/2025
9
Phác thảo bằng SketchUp

Phác thảo bằng SketchUp

20/05/2025
33
Vì sao SketchUp lại thích hợp cho concept?

Vì sao SketchUp lại thích hợp cho concept?

20/05/2025
33
  • Giới thiệu
  • Cửa hàng
  • Facebook
  • Youtube
  • Liên hệ

Tổng số lượt truy cập: 77234  |  Hôm nay: 126  |  Hôm qua: 180

No Result
View All Result
  • Kiến Trúc
  • Nội Thất
  • Đồ Họa
  • Phần Mềm
  • Tài Liệu
  • Khác

Tổng số lượt truy cập: 77234  |  Hôm nay: 126  |  Hôm qua: 180