Trường (Fields)

Về cơ bản, trường là một hàm: một tập hợp các lệnh có thể biến hóa một số đầu vào tùy ý thành một đầu ra duy nhất. Kết quả của một trường sau đó có thể được tính toán nhiều lần với các dữ liệu đầu vào khác nhau. Chúng được sử dụng trên toàn bộ các nút hình học để cho phép tính toán có kết quả khác nhau cho mọi phần tử (điểm đỉnh khung lưới, bề mặt, v.v.).

../../_images/modeling_geometry-nodes_fields_title.png

Một trường đầu vào cho một nút.

Ví dụ, trong hình trên, trường được kết nối với nút "Đặt Vị Trí" phụ thuộc vào hai đầu vào, Vị Trí (Position)Chỉ Số (Index), đồng thời biến chúng thành một vectơ bằng cách sử dụng một lệnh duy nhất.

Hình Tượng của Trường (Field Visualization)

Hình dạng ổ cắm được sử dụng để truyền tải ổ cắm nào là trường và ổ cắm nào là dữ liệu thông thường. Có thể có ba hình dạng ổ cắm, mỗi hình dạng hình tượng hóa "tình trạng trường" của nó:

Hình/Vòng/Tròn (Circle)

Ổ cắm yêu cầu một giá trị thực duy nhất, và nó không thể chấp nhận đầu vào trường. Đối với các ổ cắm đầu ra, chức năng này có nghĩa là nút luôn luôn xuất ra một giá trị duy nhất.

Hình Thoi (Diamond)

Ổ cắm có thể chấp nhận đầu vào trường hoặc nó cung cấp đầu ra của một trường. Một giá trị duy nhất không đổi có thể được kết nối với các ổ cắm này, song sau đó đầu ra thường sẽ không thay đổi mấy cho mỗi phần tử.

Hình Thoi với Chấm Tròn (Diamond with Dot)

Ổ cắm có thể là một trường, nhưng nó hiện là một giá trị duy nhất. Chức năng này hữu ích vì nó cho phép theo dõi nguồn, nơi các đơn giá trị được tính toán, thay vì một trường có nhiều kết quả khác nhau. Điều đó cũng có nghĩa là Kiểm Tra Ổ Cắm (Socket Inspection) sẽ hiển thị giá trị thay vì các tên đầu vào của trường.

../../_images/modeling_geometry-nodes_fields_constant.png

Hình dạng ổ cắm là một hình thoi với một dấu chấm tròn, có nghĩa là trường có cùng giá trị cho mọi phần tử. Mỗi điểm sẽ được dịch chuyển lên 5 m.

../../_images/modeling_geometry-nodes_fields_varying.png

Hình dạng ổ cắm là một hình thoi và đầu vào trường bây giờ có một đầu vào biến đổi. Nói theo cách khác, giá trị có thể khác nhau đối với mọi phần tử. Trong trường hợp này, vị trí sẽ được nhân đôi, vì dịch chuyển cho mọi điểm là vị trí của điểm.

Mẹo

Thông thường, người ta muốn trích xuất một đơn giá trị ra khỏi một trường. Mặc dù, về mặt khái niệm mà nói, việc chỉ đơn thuần thay đổi một trường thành một giá trị duy nhất không thôi, không có ý nghĩa gì cả, song trong chế độ "Chỉ Số" thì Nút Chỉ Số Mẫu Vật (Sample Index Node) hoặc Nút Thống Kê Thuộc Tính (Attribute Statistic Node) có thể được sử dụng để trích xuất một đơn giá trị từ một trường đã được tính toán trên một hình học.

Khi một kết nối được thực hiện giữa hai ổ cắm nút hỗ trợ các trường thì kết nối nút sẽ được vẽ dưới dạng một đường đứt nét. Nếu bạn nhầm lẫn, kết nối một ổ cắm không phải là trường với một ổ cắm là trường, thì kết nối sẽ được vẽ dưới dạng đường màu đỏ trơn đặc, báo cho biết rằng có lỗi xảy ra.

Thể Loại Nút (Node Types)

Các nút có thể được phân ra thành hai hạng mục: các nút luồng dữ liệu thường truyền hình học và các nút trường hoạt động trên dữ liệu cho mỗi phần tử. Các nút trường có thể là các nút đầu vào đưa dữ liệu hình học vào cấu trúc cây nút, hoặc các nút hàm hoạt động trên dữ liệu đó.

Nút Luồng Dữ Liệu (Data Flow Nodes)

Các nút có đầu vào là hình học và đầu ra là hình học hầu như sẽ luôn luôn là các nút của luồng dữ liệu. Có nghĩa là chúng thực sự thay đổi dữ liệu hình học sẽ được xuất ra từ bộ điều chỉnh Các Nút Hình Học.

Nút Hàm (Function Nodes)

Các nút có đầu vào và đầu ra của ổ cắm hình thoi là các nút trường và giống với các lệnh sẽ được tính toán bởi các nút luồng dữ liệu. Ví dụ về các nút hàm là các nút toán học và các nút phức tạp hơn như Nút Mức Lân Cận Hình Học (Geometry Proximity Node).

Nút Đầu Vào (Input Nodes)

Các nút đầu vào cung cấp dữ liệu cho quá trình đánh giá hiện trường. Tự bản thân chúng, chúng không có ý nghĩa gì; chúng phải được đánh giá trong ngữ cảnh của một nút luồng dữ liệu (hình học) để thực sự xuất ra một giá trị. Ví dụ về các nút đầu vào là các nút đầu vào thuộc tính được tích hợp sẵn như Vị Trí (Position)ID (Chỉ Danh), nhưng cũng có các nút lựa chọn như Lựa Chọn Điểm Kết (Endpoint Selection).

Các đầu vào của trường cũng có thể đến từ các nút khác xử lý hình học như Phân Bố các Điểm trên Bề Mặt (Distribute Points on Faces), ở dạng Thuộc Tính Ẩn Danh (Anonymous Attributes).

Ngữ Cảnh Trường (Field Context)

Toàn bộ các nút trường hoạt động trong ngữ cảnh của nút luồng dữ liệu mà chúng kết nối với. Bối cảnh thường bao gồm một thể loại thành phần hình học và một phạm vi thuộc tính, vì vậy nó xác định dữ liệu nào được truy xuất từ các nút đầu vào.

Một sự hiểu lầm phổ biến là cùng một cấu trúc cây nút trường được sử dụng ở nhiều nơi sẽ xuất ra cùng một dữ liệu. Cái này không nhất thiết là một sự thật, vì cấu trúc cây nút trường sẽ được đánh giá cho mọi nút luồng dữ liệu, có khả năng lấy dữ liệu từ một hình học khác hoặc hình học đã thay đổi.

../../_images/modeling_geometry-nodes_fields_flow-1.png

Ở đây, trường đầu vào của nút Đặt Vị Trí (Set Position) được tính toán một lần. Để tính toán trường, nút di chuyển ngược lại để lấy đầu vào từ các nút đầu vào của trường.

../../_images/modeling_geometry-nodes_fields_flow-2.png

Khi một nút Đặt Vị Trí thứ hai được cho thêm vào, cùng một cấu trúc cây nút trường sẽ được đánh giá hai lần, mỗi lần cho một nút luồng dữ liệu. Tại nút Đặt Vị Trí thứ hai, kết quả sẽ khác vì đầu vào hình học của nó sẽ có vị trí đã thay đổi từ nút đầu tiên.

../../_images/modeling_geometry-nodes_fields_flow-3.png

Thường thì chúng ta cần phải sử dụng các giá trị trường giống nhau ngay cả sau khi thay đổi hình dạng. Nút Nắm Bắt Thuộc Tính (Capture Attribute Node) đánh giá một trường, sao chép kết quả vào thuộc tính thuộc tính ẩn danh (anonymous attribute) trên hình học.

Ở đây, một nút Nắm Bắt Thuộc Tính lưu trữ một bản sao của vị trí ban đầu. Lưu ý rằng đánh giá đầu vào trường của nút Nắm Bắt Thuộc Tính là một bước hoàn toàn khác. Sau đó, các trường đầu vào cho các nút Đặt Vị Trí không sử dụng vị trí thực tế, mà là bản sao thuộc tính ẩn danh của nó.