Làm cách nào tôi có thể đưa thông tin màu đỉnh vào tệp .OBJ?


25

Các tệp .obj tôi xuất bị thiếu dữ liệu cho các màu đỉnh. Có cách nào để đưa thông tin màu vào tệp .obj không? Nếu không, các lựa chọn thay thế là gì?

Câu trả lời:


9

Blender có thể xuất các tệp PLY (.ply), dựa trên văn bản, rất dễ phân tích cú pháp và bao gồm các màu của đỉnh. Cách khó là thay đổi mã nhà xuất khẩu OBJ sao cho nó bao gồm các màu của đỉnh (do đó phá vỡ tính tương thích obj).


8
Cách sai là thay đổi nhà xuất khẩu OBJ. Sử dụng các công cụ thích hợp cho công việc; nếu bạn muốn màu đỉnh, OBJ của Wavefront rõ ràng không phải là công cụ bạn muốn sử dụng (hoặc lạm dụng).
Martin Sojka

6
Tại sao đó là một cách sai? Nếu anh ta chỉ lấy nhà xuất khẩu OBJ làm cho riêng mình, tôi thực sự thất bại khi thấy điều đó "sai". Cách sai là không làm bất kỳ công việc nào vì nó luôn là cách sai với ai đó.
Ravachol

Định dạng .obj sử dụng các tệp .mtl để lưu trữ thông tin tài liệu, nhưng theo tôi biết, chỉ hỗ trợ một tài liệu trên mỗi khuôn mặt. Ngoài ra, .obj là một trong số rất nhiều chủ đề mà mục nhập wikipedia thực sự hữu ích: en.wikipedia.org/wiki/Wavefront_.obj_file
Exilyth

3
Đó là sai vì OBJ là một đặc điểm kỹ thuật cố định. Khi bạn bắt đầu thay đổi nhà xuất khẩu để làm thêm công cụ , đó không còn là nhà xuất khẩu OBJ, đó là một thứ khác. Từ đó, nó có thể biến thành bất kỳ con thú đa đầu nào. Tuy nhiên, câu trả lời tốt, tôi chưa bao giờ nghe nói về PLY.
Kỹ sư

@NickWiggill PLY không nhất thiết là một lựa chọn tốt - có thể bạn chưa từng nghe về nó vì lý do chính đáng. Nó phức tạp hơn nhiều so với OBJ và nó cho phép linh hoạt hơn mức cần thiết một cách hợp lý để sử dụng cho một mô hình tĩnh. Nếu bạn cần thêm tính linh hoạt, có lẽ bạn nên sử dụng định dạng tệp phổ biến hơn với các trình phân tích cú pháp được thiết lập tốt, chẳng hạn như COLLADA
bobobobo

18

Có tồn tại một hương vị của * .obj của Wavefront tạo điều kiện cho Vertex Coloring .. Tôi biết hai ứng dụng có thể xuất các ứng dụng này là "MeshLab" (miễn phí) và "MeshMixer" (cũng miễn phí từ Autodesk). ngay sau mỗi định nghĩa đỉnh như hình bên dưới ..

(Mảnh * .obj)

####
#
# OBJ File Generated by Meshlab
#
####
# Object VERTEXPAINT_004_OBJ.obj
#
# Vertices: 284
# Faces: 281
#
####
mtllib ./VERTEXPAINT_004_OBJ.obj.mtl

vn 0.029683 0.730087 -0.682709
v 1220.094482 -572.500000 177.713943 0.984314 0.764706 1.000000  

# "3 vals for Vert and 3 vals for Col"

vn 0.000000 0.858139 -0.513418
v 1291.571533 -609.439636 -28.628490 0.921569 0.219608 1.000000
vn 0.303129 0.896367 -0.323480

Hãy thử sử dụng lưới để tạo "Loại trừ môi trường dựa trên Vertex", sau đó mở nó bằng "MeshMixer" ..

Điều này sẽ làm rõ vấn đề của bạn .. Tôi nghĩ rằng việc tô màu Vertex đang quay trở lại với sự ra đời của các shader .. Thật buồn cười khi cách tô màu đỉnh dường như bị bỏ qua khi bản đồ hình ảnh được phát hiện .. Bây giờ chúng ta sẽ thấy sự trở lại của "Vertex Coloring"! Hãy cho tôi biết nếu điều này là hữu ích!


Ồ, tôi hiểu rồi. Họ đã xử lý màu trên mỗi đỉnh là 3 phao sau thông vsố vị trí đỉnh. Cách thông minh để (hy vọng) không phá vỡ tính tương thích với các trình phân tích cú pháp OBJ hiện có.
bobobobo

+1 Tôi đã gặp chính xác các đỉnh được tô màu này trong một tệp obj tôi mới mua. Theo Vấn đề phân tích màu của OBJ Vertex · Vấn đề # 2083 · mrdoob / ba.js , các màu theo thứ tự xanh đỏ, như thông thường và từ 0 đến 1. Bạn có biết bất kỳ tài liệu thực tế nào về điều này từ bất kỳ folks ủng hộ nó? Làm thế nào về bất kỳ mã nguồn mở nào thực hiện nó? Có thực sự có một tiêu chuẩn bằng văn bản cho obj được chấp nhận rộng rãi?
nealmcb

Aha - để trả lời một trong những câu hỏi của tôi, MeshLab không chỉ miễn phí, mà còn là nguồn mở (GPL) và đa nền tảng :)
nealmcb

7

OBJ mặt sóng hỗ trợ các vật liệu , nhóm màu nào có cùng màu.

Báo cáo tài liệu trông như thế này:

newmtl redMtl
Kd 1.00 0.00 0.00
Ks 0.50 0.50 0.50
Ns 18.00

Vì vậy, Kd là thành phần khuếch tán, Ks specular.

Chúng sẽ được chỉ định trong tệp .mtl đi kèm với tệp .obj. Bên trong tệp .obj là các câu lệnh như

usemtl redMtl
f 1/5/1 30/39/2 20/29/3
f 20/29/4 30/39/5 31/41/6
f 35/48/7 26/35/8 2/6/9

Điều này có nghĩa là các mặt được chỉ định ở đó sẽ sử dụng vật liệu redMtl. Khi bạn phân tích tệp obj, phần này sẽ chuyển sang màu trên mỗi đỉnh.

Nếu có nhiều màu sắc khác nhau, bạn sẽ có rất nhiều vật liệu khác nhau, nhưng bạn có thể làm được.

Đây là video về cách gán một nhóm khuôn mặt cụ thể cho một vật liệu khác . Bạn có thể chỉ định một vật liệu khác nhau cho mỗi mặt trong một lưới nếu bạn muốn.


5
Thật không may, điều đó chỉ cho phép tô màu theo từng mặt chứ không phải tô màu theo đỉnh.
lông mịn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.