Pregunta

Estoy trabajando en una aplicación que necesita para representar de forma rápida sencilla escenas 3D en el servidor y, a continuación, volver a ellos como un archivo JPEG a través de HTTP.Básicamente, quiero ser capaz de simplemente incluir una dinámica escena 3D en una página HTML, por hacer algo como:

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

Mi pregunta es acerca de lo que las tecnologías a utilizar para hacer la representación.En una aplicación de escritorio que me gustaría bastante, naturalmente, el uso de DirectX, pero me temo que no puede ser ideal para una aplicación de servidor que sería la creación de imágenes de decenas o incluso cientos de usuarios en tándem.¿Alguien tiene alguna experiencia con esto?Hay una API 3D (preferiblemente libre disposición) que sería lo ideal para esta aplicación?Es mejor escribir un procesador de software desde cero?

Mis principales preocupaciones sobre el uso de DirectX o OpenGL, es saber si va a funcionar bien en un entorno de servidor virtualizado, y si tiene sentido con el típico hardware del servidor (que tengo poco control).

¿Fue útil?

Solución

RealityServer por imágenes mentales está diseñado para hacer precisamente lo que aquí se describe.Más detalles están disponibles en la página del producto (incluyendo un descargable Developer Edition).

RealityServer docs

Otros consejos

Id a decir que su mejor apuesta es tener un Direct3D/OpenGL de la aplicación que se ejecuta en el servidor (sin parar).A continuación, hacer que el servidor de la página enviar una solicitud a la representación de la aplicación, y tiene la representación de la aplicación snend jpg/png/lo que sea posterior.

  • Si Direct3D/OpenGL es lento para procesar la escena en hardware, entonces cualquier solución de software va a ser peor
  • Por mantener la representación de la aplicación en ejecución, se está evitando la sobrecarga de la creación/destrucción de texturas, backbuffers, vertex buffers, etc.Usted podría posiblemente representar una escena de 100 veces por segundo.

Sin embargo, muchos servidores no tienen tarjetas gráficas.Direct3D es largly inútil en el software (no es un emulador de dispositivo de Ms, pero es solo bueno para las pruebas de los efectos), nunca trató de OpenGL en el software.

Usted podría ajustar Pov-ray (aquí el uso de POSIX y de las Ventanas de la construcción).PHP ejemplo:

<?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 disponible aquí.

Usted podría utilizar una de las plantillas de idioma como Jinja2 para insertar sus propias coordenadas de la cámara.

No tanto una API, sino más bien un sistema de representación; Povray?También parece existir una http la interfaz de...

También se puede ver en Java3D (https://java3d.dev.java.net/), que sería una solución elegante si su servidor arquitectura basada en Java ya.

También me gustaría recomendar tratando de conseguir lejos con un solo software de representación de la solución, si puede, tratando de forcejear un montón de procesos de servidor que están haciendo peticiones simultáneas en la representación 3D de hardware suena como un montón de trabajo.

Yafaray (http://www.yafaray.org/ puede ser una buena primera opción a considerar por las generales de representación 3D.Es razonablemente rápido y los resultados son excelentes.Puede ser utilizado dentro de otro software, por ejemplo,el Blender 3D modeler.La licencia es LPGL.

Si el software de servidor pasa a ser escrito en Python, y la escena 3D es una visualización de datos científicos, mira en MayaVi2 http://mayavi.sourceforge.net/, o si no, ir a buscar en http://www.vrplumber.com/py3d.py

Aquellos que sugieren los populares de POV-Ray necesitan darse cuenta de que no es una biblioteca o cualquier tipo de entidad que ofrece una API.El proceso del lado del servidor tendría que escribir un texto escena de archivo, ejecutar un nuevo proceso para ejecutar POV-Ray con el derecho de las opciones, y tomar el archivo de imagen resultante.Si que es fácil de configurar para una aplicación en particular, y si usted tiene más experiencia con POV-Ray que con otros renderizadores, ir a por ello!

Del lado de servidor de representación sólo tiene sentido si la escena se compone de un gran número de objetos que la descarga del conjunto de datos para el cliente para el cliente de representación sería demasiado lento y la representación no se espera que sea en tiempo real.Renderización por parte del cliente no es muy difícil si usas algo como jogl junto con la progresiva escena de descarga (es decir,descargar los objetos del fondo y el render, luego gradualmente se descargue de los objetos según la distancia desde el punto de vista y volver a renderizar).

Si usted realmente quiere hacer y procesamiento del lado del servidor, puede que usted quiera separar el servidor web y el de la representación de la parte en dos equipos, cada uno configurado de forma óptima para su tarea (representador tarjeta de OpenGL, mínimo HD y sólo lo suficiente RAM, el servidor tiene un montón de discos rápidos, mucha memoria ram, copias de seguridad y no de OpenGL).Yo dudo mucho de que usted será capaz de hacer la representación de hardware en un servidor virtualizado desde el servidor probablemente no tiene un GPU.

Echa un vistazo wgpu.net.

Creo que es muy útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top