Tương tác và cách sử dụng Arrays trong Flow
Tính đến viết bài này (3ds Max Interactive / Stingray 1.9) không có cách nào để trực tiếp sử dụng Arrays (mảng) trong Flow, chúng ta chỉ có thể sử dụng chúng từ Lua. Nhưng sẽ rất tiện nếu có thể hực hiên tất cả trong Flow! Do đó, trong bài viết này, iRender sẽ chia sẻ cho bạn cách sử dụng Arrays trong Flow.
Mục đích là để có một mảng (arrays) với các vật liệu và gán chúng cho một số đối tượng trên Flow. Trong bài viết này, iRender sẽ chia sẻ cách sử dụng node “script do string”, theo cách đó mọi thứ đều được nằm trong Flow.
Cách sử dụng Arrays trong Flow tiện lợi từ iRender
Cách sử dụng các node String Data đưa vào node Script Do String
Ở cấp độ khởi đầu, chúng tôi sẽ định hướng mảng, trong trường hợp này tôi muốn làm cho các giá trị mảng có thể dễ dàng chỉnh sửa nên tôi đã sử dụng các node “String Data” đưa vào node “Script Do String”. Một nhược điểm là số lượng input bị hạn chế, nhưng thật may vì tôi chỉ cần bốn input.
Trong node tôi sử dụng mã Lua sau để xây dựng array:
test_array={}; test_array[0]=select(1,…); test_array[1]=select(2,…); test_array[2]=select(3,…); test_array[3]=select(4,…);
- Đầu tiên tôi cho test_array là một mảng.
- Sau đó là dấu chấm phẩy để tôi có thể thêm nhiều lệnh trong cùng một chuỗi
- Tiếp theo là thiết lập các giá trị cho bốn phần tử mảng: trong ngoặc vuông, chỉ mục và giá trị được truy xuất bằng hàm select (n,…) với các chỉ số từ 0 đến 3.
Chi tiết áp dụng các node String Data đưa vào node Script Do String
Bây giờ mảng đã được định nghĩa và chúng ta có thể sử dụng nó,
Đầu tiên chúng tôi sử dụng các node flow bình thường để minh họa bốn đơn vị khi bạn nhấn phím 1 trên bàn phím:
- Đặt “button name” của node “keyboard button” thành 1
- Móc nó ra vào node “for loop”
- Đặt giá trị bắt đầu và kết thúc của node “for loop” thành 0 và 3
- “current value” của node “for loop” được nối với node X của node te “Vector from Component” – theo cách đó chúng được tạo cạnh nhau
- Các đơn vị thực tế được tạo bởi node “Spawn Unit on Position” sẽ lấy dữ liệu chuỗi chứa tên đơn vị, vị trí chúng tôi đã tính toán trong node ” Spawn Unit on Position “. “Loop body” của node “For Loop” cần được nối với “Spawn” của node “Spawn Unit on Position”.
- Một khi tất cả đã xong, chúng ta đến node “Script Do String” sử dụng “Spawned Unit”, tên khe vật liệu từ node “String Data” và “”Current Value” của node “For Loop” để chạy Lua code. “Spawned Unit” từ node “Spawn Unit of Position” cần được nối với node “In” của node “Script Do String” để mã Lua được kích hoạt.
Mã Lua được sử dụng tương đối đơn giản:
stingray.Unit.set_material(select(1,…), select(2,…), test_array[select(3,…)])
- Hàm stingray.Unit.set_material cần ba tham số: 1. đơn vị, 2. tên khe vật liệu và 3. tên vật liệu chúng ta sẽ sử dụng trong khe này.
- chúng ta có được đơn vị bằng cách gọi select (1, …) – vì vậy chúng ta cần nối thiết bị với arg 1
- chúng ta nhận được khe vật liệu bằng cách gọi select (2, …) – vì vậy chúng ta cần cung cấp tên vị trí (mà bạn có thể kiểm tra trong trình chỉnh sửa đơn vị) để lập luận 2
- chúng ta có được tên vật liệu thực tế bằng cách tra cứu index (mà chúng ta nhận được từ select (3, …)) trong mảng test_array – vì vậy chúng ta cần cung cấp giá trị hiện tại từ for loop với arg 3.
Để chạy nó ở cấp độ của riêng bạn, bạn cần cung cấp như sau:
- bốn tài liệu, nhập đường dẫn của chúng (liên quan đến dự án) trong bốn node String Data” của phần “initialise array”
- một đơn vị, nhập đường dẫn đó vào node “String Data” trên cùng của nhóm “use array values” và nhập tên khe vật liệu (mà bạn có thể tìm thấy trong phần tài liệu của trình soạn thảo đơn vị) trong node “String Data” dưới cùng ở cùng nhóm
- Bạn có thể muốn thêm một node nhân hoặc chia trước “X” của “Vector from Components ” nếu đơn vị nhiều hơn 1.
Kết luận
iRender hy vọng, bài viết này đã phần nào giải thích và cho các bạn một cái nhìn gần gũi, rõ ràng hơn về cách sử dụng arrays trong Flow.
Cảm ơn vì đã đọc! Để có được những kết xuất 3D (3D Rendering) hay những hình ảnh hoạt hình tuyệt vời nhất với ánh sáng theo phong cách riêng của bạn sẽ không thể thiếu những công cụ kết xuất 3D. Tại iRender, chúng tôi nỗ lực mỗi ngày để đem tới cho khách hàng thân yêu trải nghiệm tuyệt vời nhất với chi phí hợp lý.
iRender giúp bạn biến chiếc máy tính cá nhân cấu hình thấp thành chiếc máy tính vô song, mà không mất chi phí đầu tư và bảo trì máy, tất cả có được là nhờ dịch vụ cloud rendering tại iRender. Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ với iRender qua Zalo: (+84)916017116. Chúng tôi sẽ sẵn sàng giúp bạn bằng mọi cách!
Hãy đăng ký tại đây để trở thành thành viên của cộng đồng iRender ngay hôm nay để ngừng lãng phí hàng giờ vô ích cho quá trình kết xuất. Luôn đi đầu trong công nghệ đồ họa tiên tiến, chúng tôi thực hiện kết xuất, việc sáng tạo là của bạn!
Chúc bạn đọc một ngày tốt lành!