2008-09-15 39 views
7

Tôi đang làm việc trên một ứng dụng cần nhanh chóng hiển thị các cảnh 3D đơn giản trên máy chủ và sau đó trả lại chúng dưới dạng JPEG qua HTTP. Về cơ bản, tôi muốn có thể chỉ cần bao gồm một cảnh 3D động trong một trang HTML, bằng cách thực hiện một cái gì đó như:API để hiển thị 3D phía máy chủ

<img src="http://www.myserver.com/renderimage?scene=1&x=123&y=123&z=123"> 

Câu hỏi của tôi là về công nghệ sử dụng để thực hiện hiển thị. Trong một ứng dụng máy tính để bàn, tôi sẽ sử dụng DirectX một cách tự nhiên, nhưng tôi e rằng nó có thể không lý tưởng cho một ứng dụng phía máy chủ sẽ tạo ra hình ảnh cho hàng chục hoặc thậm chí hàng trăm người dùng. Có ai có bất cứ kinh nghiệm với điều này? Có một API 3D (tốt nhất là tự do có sẵn) mà sẽ là lý tưởng cho ứng dụng này? Có tốt hơn khi viết trình kết xuất phần mềm từ đầu không?

Mối quan tâm chính của tôi về việc sử dụng DirectX hoặc OpenGL, liệu nó có hoạt động tốt trong môi trường máy chủ ảo hay không và liệu nó có hợp lý với phần cứng máy chủ điển hình hay không.

Trả lời

5

Máy chủ thực tế bằng hình ảnh tinh thần được thiết kế để thực hiện chính xác những gì được mô tả ở đây. Các chi tiết khác có sẵn trên trang sản phẩm (bao gồm Bản phát triển dành cho nhà phát triển có thể tải xuống).

RealityServer docs

+1

Liên kết đã chết. – Soviut

+0

Dường như http://RealityServer.com là liên kết phù hợp, ngay bây giờ. Yêu cầu ủy quyền –

+0

cho trang web này – Atrahasis

4

Id cho biết đặt cược tốt nhất của bạn là có ứng dụng Direct3D/OpenGL chạy trên máy chủ (không dừng). Làm cho trang máy chủ gửi yêu cầu đến ứng dụng hiển thị và có ứng dụng hiển thị thu hút một jpg/png/bất cứ điều gì trở lại.

  • Nếu Direct3D/OpenGL là để làm chậm để render các cảnh trong phần cứng, sau đó bất kỳ giải pháp phần mềm sẽ tồi tệ hơn
  • Bằng cách giữ ứng dụng vẽ chạy, bạn đang tránh phí của việc tạo/phá hủy kết cấu, backbuffers, bộ đệm đỉnh, vv Bạn có thể tiềm năng làm cho một cảnh đơn giản 100 lần trong một giây.

Tuy nhiên nhiều máy chủ không có cạc đồ họa. Direct3D là vô dụng trong phần mềm (có một thiết bị mô phỏng từ Ms, nhưng nó chỉ tốt cho các hiệu ứng thử nghiệm), không bao giờ thử OpenGL trong phần mềm.

0

Không quá nhiều API nhưng đúng hơn là trình kết xuất đồ họa; Povray? Dường như có một giao diện http ...

0

Hiển thị phía máy chủ chỉ có ý nghĩa nếu cảnh bao gồm một số lượng lớn các đối tượng sao cho tải xuống tập dữ liệu về máy khách sẽ hiển thị quá chậm và hiển thị không được mong đợi trong thời gian thực. Hiển thị phía khách hàng không quá khó nếu bạn sử dụng một cái gì đó như jogl cùng với tải xuống cảnh tiến bộ (tức là tải xuống đối tượng nền trước và kết xuất, sau đó tải xuống dần dần các đối tượng dựa trên khoảng cách từ điểm xem và hiển thị lại).

Nếu bạn thực sự muốn hiển thị phía máy chủ, bạn có thể muốn tách phần máy chủ web và phần hiển thị thành hai máy tính với mỗi cấu hình được tối ưu hóa cho tác vụ của họ (trình kết xuất có thẻ OpenGL, HD tối thiểu và RAM đủ) máy chủ có rất nhiều đĩa nhanh, nhiều ram, sao lưu và không có OpenGL). Tôi rất nghi ngờ bạn sẽ có thể làm hiển thị phần cứng trên một máy chủ ảo hóa vì máy chủ có thể không có GPU.

+1

Lý do OP có thể hiển thị trên máy chủ sẽ tương tự như lý do tôi tìm thấy câu hỏi này; Họ muốn tạo hình thu nhỏ hoặc khung lấy từ một cảnh được tải lên máy chủ. – Soviut

+0

Một lý do khác để hiển thị phía máy chủ là bảo mật (hiển thị phía máy khách có thể dẫn đến dữ liệu bị để lại trong bộ nhớ). Nếu bạn không muốn dữ liệu nhạy cảm được chuyển đến thiết bị, hiển thị phía máy chủ là cách để đi – CantrianBear

0

Yafaray (http://www.yafaray.org/) có thể là lựa chọn tốt đầu tiên để xem xét hiển thị 3D chung. Đó là khá nhanh và kết quả trông tuyệt vời. Nó có thể được sử dụng trong các phần mềm khác, ví dụ: Trình tạo mô hình máy xay sinh tố 3D. Giấy phép là LPGL.

Nếu phần mềm server-side xảy ra phải được viết bằng Python, và cảnh 3D mong muốn là một minh hoạ dữ liệu khoa học, nhìn vào MayaVi2 http://mayavi.sourceforge.net/, hoặc nếu không, hãy cho một trình duyệt tại http://www.vrplumber.com/py3d.py

Những người đề nghị POV-Ray phổ biến rộng rãi cần phải nhận ra nó không phải là một thư viện hay bất kỳ loại thực thể nào cung cấp một API. Quá trình phía máy chủ sẽ cần phải viết một tệp cảnh văn bản, thực thi một quy trình mới để chạy POV-Ray với các tùy chọn phù hợp và lấy tệp hình ảnh kết quả. Nếu đó là dễ dàng để thiết lập cho một ứng dụng cụ thể, và nếu bạn có chuyên môn hơn với POV-Ray hơn với renderers khác, cũng đi cho nó!

0

Bạn cũng có thể xem Java3D (https://java3d.dev.java.net/), đây sẽ là giải pháp thanh lịch nếu kiến ​​trúc máy chủ của bạn đã được dựa trên Java.

Tôi cũng khuyên bạn nên cố gắng tránh xa giải pháp kết xuất chỉ phần mềm nếu bạn có thể - cố gắng sắp xếp toàn bộ quá trình máy chủ đang thực hiện các yêu cầu đồng thời trên phần cứng kết xuất đồ họa 3D. .

1

Bạn có thể quấn Pov-ray (ở đây sử dụng POSIX và xây dựng Windows). Ví dụ về PHP:

<?php 
chdir("/tmp"); 
@unlink("demo.png"); 
system("~janus/.wine/drive_c/POV-Ray-v3.7-RC6/bin/pvengine-sse2.exe /render demo.pov /exit"); 
header("Content-type: image/png"); 
fpassthru($f = fopen("demo.png","r")); 
fclose($f); 
?> 

demo.pov có sẵn here.

Bạn có thể sử dụng ngôn ngữ tạo khuôn mẫu như Jinja2 để chèn tọa độ camera của riêng bạn.

-2

Khám phá wgpu.net.

Tôi nghĩ nó rất hữu ích.

+0

Dịch vụ này dường như chưa được khởi chạy. Không có tài liệu hoặc API, chỉ là bản trình diễn công nghệ. Theo cách nào bạn thấy nó hữu ích? –

+0

Tôi đang tìm giải pháp để đặt mô hình 3D trên web và cho phép người dùng xem chúng và ví dụ: mua :). Yêu cầu chính đối với công ty của tôi là bảo vệ các mô hình. Tôi đã viết cho họ vài câu hỏi và nó seam rằng nó sẽ lựa chọn tốt nhất. Tôi đang tìm kiếm giải pháp để sử dụng hoặc thậm chí để mua một số và lưu trữ trên máy chủ của tôi. Tôi tự hỏi về giá cả. – Magdalena

+1

Trang này không còn hoạt động nữa. – paqogomez

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