2011-06-26 39 views
7

Xét sau:Hiển thị nhiều ô 2D trong 3D bằng Đồ họa trong Mathematica?

lalist = {{{{1, 1}, 1}, {{3, 3}, 1}, {{5, 5}, 1}}, 
      {{{1, 5}, 1}, {{3, 3}, 1}, {{5, 1}, 1}}} 

enter image description here

Row[{ 
    Graphics[{ 
      Opacity[0.5],Red, 
      Disk @@@ lalist[[1]]}, 
      Frame -> True], 
    Graphics[{ 
      Opacity[0.5],Blue, 
      Disk @@@ lalist[[2]]}, 
      Frame -> True]} 
    ] 

enter image description here

  • Có thể rằng tôi âm mưu The Blues Đĩa "đằng sau" những cái màu đỏ trong 3 D cốt truyện ?

Dưới đây không phải là những gì tôi cần:

enter image description here

Trả lời

10

Giống như này?

Graphics3D[{{Texture[ 
Graphics[{Opacity[0.5], Blue, Disk @@@ lalist[[2]]}, 
    Frame -> True]], 
Polygon[{{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}}, 
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0, 
    1}}]}, {Texture[ 
Graphics[{Opacity[0.5], Red, Disk @@@ lalist[[1]]}, 
    Frame -> True]], 
Polygon[{{-1, -1, 1}, {1, -1, 1}, {1, 1, 1}, {-1, 1, 1}}, 
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0, 
    1}}]}}, Lighting \[Rule] "Neutral"] 

enter image description here

Rất nhiều trong số họ với opacity .2:

tab = Table[{Opacity \[Rule] .2, 
Texture[Graphics[{Opacity[0.5], Blue, Disk @@@ lalist[[2]]}, 
    Frame -> True]], 
Polygon[{{-1, -1, z}, {1, -1, z}, {1, 1, z}, {-1, 1, z}}, 
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0, 
    1}}]}, {z, -2, 2, 1}]; 
plt = Graphics3D[{tab}, Lighting \[Rule] "Neutral"] 

enter image description here

và 400 dường như không có nhiều của một vấn đề về tốc độ (bạn có thể dễ dàng sửa đổi mã ở trên để xem nó).

EDIT: OK, chỉ để được ngớ ngẩn, hãy thử này

Dynamic[Graphics3D[{{Texture[#], 
    Polygon[{{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}}, 
    VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0, 
     1}}]}, {Texture[Rotate[#, \[Pi]/2]], 
    Polygon[{{-1, -1, 1}, {1, -1, 1}, {1, 1, 1}, {-1, 1, 1}}, 
    VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0, 
     1}}]}}, Lighting \[Rule] "Neutral"] &@Binarize[CurrentImage[]]] 

mang đến cho

enter image description here

(hoặc một cái gì đó như thế), xoay, được cập nhật theo thời gian thực, vv

+0

@acl, xin lỗi, không có tôi đã đó, tôi thực sự muốn một cốt truyện 3D :) Làm thế nào tôi có thể diễn tả tốt hơn câu hỏi của mình? – 500

+0

@acl, Có, bạn có nghĩ rằng nó có thể xử lý 400 trong số họ :)? – 500

+0

@ 500 chỉ có một cách để tìm hiểu :) nếu nó không hỏi ở đây ... – acl

4

Sử dụng các họa tiết trong suốt để hiển thị các vòng tròn này trong các lớp as ACL does là một giải pháp tốt, trừ khi người ta muốn tương tác với đối tượng 3D kết quả. Rendering of 3D objects that contain transparent elements is done in software whereas otherwise it would have been done in hardware:

Trình kết xuất 3D sử dụng hai phương pháp phân loại đa giác khác nhau . Đối với các cảnh đồ họa không bao gồm độ trong suốt , bộ đệm độ sâu được tăng tốc phần cứng được sử dụng. Nếu không, trình kết xuất sử dụng phân vùng không gian nhị phân cây để tách và sắp xếp các đa giác từ bất kỳ quan điểm nào. Cây BSP chậm hơn để tạo và không phải là phần cứng được tăng tốc, nhưng nó cung cấp khả năng chung nhất để hỗ trợ đa giác .

Trên máy tính xách tay của tôi, tương tác với đồ họa 3D cực kỳ chậm ngay khi các đối tượng trong suốt bắt đầu xuất hiện.

Giải pháp sẽ là sử dụng đĩa 3D thay vì máy bay bán trong suốt với đĩa 2D trong đó. Vì MMA không có 3D Disk s hoặc Circle s nếu bạn muốn làm một cái gì đó như thế, bạn phải cuộn của riêng bạn. Một phiên bản xương trần sẽ là một cái gì đó như:

myDisk[{x_, y_, z_}, r_] := 
[email protected][ 
       {x, y, z} + r {Cos[\[Phi]], Sin[\[Phi]], 0} // N, 
       {\[Phi], 0, 2 \[Pi], 2 \[Pi]/200} 
       ] 

lớp của bạn sau đó sẽ được tạo ra như sau:

Graphics3D[ 
{ 
    EdgeForm[], 
    { 
    Red, 
    myDisk[{1, 1, 0.5}, 0.5], 
    myDisk[{0, 0, 0.5}, 0.5], 
    myDisk[{-1, -1, 0.5}, 0.5] 
    }, 
    { 
    Blue, 
    myDisk[{1, -1, -0.5}, 0.5], 
    myDisk[{0, 0, -0.5}, -0.5], 
    myDisk[{-1, 1, -0.5}, 0.5]} 
    } 
] 

enter image description here

+0

ah, nhưng đa giác của tôi có khuôn mặt của tôi trên chúng! – acl

+0

@ACL vâng, tôi cũng đã thử mã của bạn. Làm cho một số hình ảnh tội phạm tìm kiếm, thay vì không thể nhận ra. Chỉ tuyệt vời cho avatar. (Bạn có mặc áo len cao cổ và một bộ râu, BTW?) –

+0

trong mọi trường hợp bạn đang phải, 'Opacity' làm chậm những thứ xuống ngay cả trên macbook của tôi với card đồ họa pathetic của nó. – acl

Các vấn đề liên quan