В моем приложении Java3D у меня есть подвижная платформа просмотра (например, благодаря поведению "OrbitBehavior" и "KeyNavigatorBehavior"), поэтому я могу изменить свою точку зрения на сцену.
Теперь я хотел бы добавить объект, который является «статичным» над моим видом, то есть всегда просматривается одинаково при перемещении моего вида (например, как пистолет игрока в FPS).
К настоящему времени я попробовал 2 следующих подхода к этой проблеме, но ни один из них не сработал.
1 / Прикрепить мой объект непосредственно к платформе просмотра (через выделенную группу BranchGroup плюс группу TransformGroup).
В этом случае мой объект просто не отображается (я абсолютно не уверен, что на самом деле ему разрешено выполнять такую операцию ...). Это часть моего кода:
Код: (с view
Платформа просмотра)
BranchGroup fixedBG = new BranchGroup();
TransformGroup fixedTG = new TransformGroup();
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D transfo = new Transform3D();
transfo.setTranslation(new Vector3f(0.2f, 0.0f, -1.0f));
fixedTG.setTransform(transfo);
ColorCube fixedCube = new ColorCube(0.2);
fixedTG.addChild(fixedCube);
view.addChild(fixedBG);
2 / Примените к моему объекту то же самое преобразование (вращение + перемещение; извлеченное с помощью getTransform () в getViewPlatformTransform () - здесь я также попробовал нечто более сложное, с операциями между этими преобразованиями и начальными позициями просмотр PF и объекта) как просмотр платформы. Я делаю все это в режиме реального времени с выделенным поведением (те же условия пробуждения, что и при поведении, изменяющем местоположение представления).
Здесь мой объект исчезает, когда я перемещаю вид, а затем иногда появляется снова, когда я использую действие увеличения / уменьшения масштаба KeyNavigator (но очень нестабильно).
Я уверен, что то, что я пытаюсь сделать, выполнимо и, вероятно, довольно просто, но сейчас у меня нет понятия ...
Заранее спасибо за помощь
(PS: так как английский не является моим родным языком, я, возможно, немного запутался в объяснении своей проблемы: не стесняйтесь просить меня снова написать непонятные части)