Можно ли запускать приложения Java3D на оборудовании Nvidia 3D Vision?

Возможно ли запустить приложение Java3D на оборудовании Nvidia 3D Vision?

У меня есть существующее приложение Java3D, которое может работать в стереоскопическом 3D. Раньше я всегда запускал приложение на картах Quadro, используя средство рендеринга OpenGL и стереосистему с четырехкратной буферизацией.

Теперь у меня есть доступ к ноутбуку с системой nVidia 3D Vision (с GeForce GTX 460M). Из документации кажется, что должно быть возможно запустить мое приложение в стерео, если я использую привязки DirectX и позволю драйверам nVidia позаботиться о стерео, однако, похоже, это не так.

Если я запускаю приложение Java3D с параметром j3d.rend=d3d, API nVidia 3D Vision не распознает его как приложение DirectX.

Как я могу заставить драйверы nVidia 3D Vision обнаруживать приложение Java3D и выполнять рендеринг в стереоскопическом 3D?


person JohnnyO    schedule 10.08.2011    source источник


Ответы (4)


Я разочарован тем, что до сих пор все с самого начала отвергали это как невозможное. Я работал над этим в течение последних нескольких дней и добился некоторого прогресса. До сих пор я обнаружил, что это возможно, но с несколькими оговорками:

  1. Вам нужны последние версии драйверов от nVidia (280.29 на момент написания этой статьи)
  2. Вам нужно использовать средство визуализации Direct3D, а не средство визуализации OpenGL (-Dj3d.rend=d3d).
  3. Вам нужно заставить Direct3D работать в полноэкранном режиме. (-Dj3d.fullscreen=ОБЯЗАТЕЛЬНО)
  4. Вам нужно запустить с помощью ConfiguredUniverse в полноэкранном режиме (я использую предоставленный j3d-1x1.cfg, который доступен в документации Java3D)

Чтобы заставить его работать на 64-битной машине, мне пришлось использовать 64-битные dll для Java3D, которые кто-то любезно предоставил на форумах Java3D (http://home.java.net/node/705510) Это может потребоваться или не потребоваться в 32-разрядной системе.

Будущие выпуски драйверов nVidia обещают улучшенную поддержку стерео в оконном режиме, поэтому, возможно, в будущем это станет проще (возможно, устраняя необходимость в вариантах 3 и/или 4 выше).

Я также выясню, может ли восстановление исходного кода Java3D с некоторыми дополнительными привязками nVidia устранить требование полноэкранного режима, и опубликую результаты.

person JohnnyO    schedule 25.08.2011

Java3D использует то, что называется «Quadbuffer Stereo», то есть два отдельных кадровых буфера с двойной буферизацией, один для левого и один для правого глаза. NVidia считает эту вещь «профессионального уровня», хотя правильная стереоскопия невозможна без точного контроля содержимого обоих глаз.

Однако 3D Vision вставляет некоторые шейдеры для создания стереофонического разделения на месте. Однако это работает только с программами, дающими некоторые подсказки через 3D Vision API. Java3D нет.

Будем надеяться, что Microsoft действительно выдвинет Quadbuffered Stereo в качестве основного требования для графики DirectX 12, так что у NVidia больше не будет неубедительных оправданий, чтобы удерживать это от «потребительского уровня» OpenGL.

person datenwolf    schedule 11.08.2011
comment
Верно, но предполагается, что 3D Vision работает с любыми программами DirectX, с подсказками NVision или без них. Мне было интересно, добился ли кто-нибудь успеха с 3D-видением и привязками DirectX. - person JohnnyO; 15.08.2011
comment
@JohnnyO: Java3D основан на OpenGL, а не на DirectX. - person datenwolf; 15.08.2011
comment
@datenweolf На самом деле, Java3D имеет бэкэнды OpenGL и DirectX (а также чистую реализацию JOGL). Меня особенно интересует, чтобы аппаратное обеспечение 3D Visison работало, когда j3d.rend = d3d (я отредактировал вопрос, чтобы включить этот лакомый кусочек) - person JohnnyO; 17.08.2011

java3D не поддерживает API 3D Vision, но может работать с любой программой Direct X.

person Olafgarten    schedule 25.08.2011

Возможно, это устарело, но у меня есть бинарные библиотеки DirectX для Java3D 64. Это j3dcore-d3d.dll. Если кому-то это нужно, отправьте мне сообщение.

Из файла readme.txt:

======

ПРОЧТИ МЕНЯ

Рендерер Java3D DirectX 9.0 для 64-битных систем

январь 2010 г.

Hi

Компаньон j3dcore-d3d.dll — это средство визуализации Java3D для Microsoft DirectX D3D в 64-разрядной версии. Здесь используется точно такой же исходный код из 32-битной версии, но скомпилированный с помощью Visual Studio 2005 для 64-битной версии Windows.

Он был протестирован с Windows XP Pro. 64-битная версия, Vista 64 и Windows-7 64. Как в драйверах nVidia, так и в драйверах ATI.

использование

Перетащите j3dcore-d3d.dll в ту же папку, где находится j3dcore-ogl.dll.

Зависимость

Используйте его с 64-битной JRE. Для этого требуется Java3D для Windows AMD 64, доступный по адресу https://java3d.dev.java.net/binary-builds.html

Также требуется обновление драйвера DirectX. Его можно получить по адресу http:\www.microsoft.com\directx Текущая полная ссылка для веб-установки DirectX: http://www.microsoft.com/downloads/details.aspx?familyid=2DA43D38-DB71-4...

Эта последняя ссылка указывает на очень маленькую веб-программу обновления для среды выполнения DirectX.

Отказ от ответственности

Это только для целей тестирования. Используйте его на свой страх и риск. Это НЕ одобрено и не поддерживается Sun, Oracle или какой-либо другой компанией.

person Alex Byrth    schedule 17.08.2015