Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > 3d-графика


Автор: RedButterfly 25.9.2006, 21:04
Вот такое вот задание:
Содержание экрана:
· пространственный чертеж с изображением точки Т, ее проекций Т1, Т2, Т3 и линий связи; 
· комплексный чертеж с изображением проекций Т1, Т2, Т3 и линий связи; 
· ползунковые переключатели для интерактивного изменения координат (x, y, z) точки Т. 
Динамика:
· при изменении координат точки Т должны изменяться соответствующие проекции и сама точка Т на пространственном и комплексном чертежах. 

Помогите ссылками и литературой пожалуйста.

Автор: y3u 25.9.2006, 21:39
ну для начала понадобится почитать начальную литературку хотя бы по векторам и алгебре матриц. Откуда нужно почерпнуть информацию о представлении точки в пространстве, о матрицах поворота, масштабирования, транспонирования и т.д... Можно, к примеру, теорию почитать, скажем, Шишикин и Боресков - эти авторы много литературы про компьютерную графику написали. Затем можно почитать статейки и простенькие примеры на тему OpenGL в windows, OpenGL портированый на Java имеет очень похожий, если не идентичный API, да и подход к программированию на этом API один и тот же. Затем можно посомтреть https://jogl.dev.java.net/ порт OpenGL на джаву, там поолно примеров и вроде есть мануал. 

ПыСы
во, вспомнил, наикрутейший справочник по программированию 3D графики, весьма полезен, очень информативен и буквально с азов все разжевано, в бумажном варианте каждый программист маст хев - Серия "для профессионалов" Френсис Хилл OpenGL программирование компьютерной графики

Автор: RedButterfly 27.9.2006, 07:29
спасибоsmile

Автор: LSD 27.9.2006, 11:27
Посмотри так же Daniel Selman - Java 3D Programming.

Автор: RedButterfly 15.10.2006, 18:14
я так понимаю вот этот код из книги Дейтела есть функция и что надо дописать окошко....ведь тут нет метода main ... 
Код

import java.awt.*;
import java.awt.event.*;
import java.net.*;
// пакет расширений Java 
import javax.swing.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
// пакеты утилит Java3D
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.behaviors.mouse.*;
public class Java3DWorld extends Canvas3D{
    private Appearance appearance; // внешний вид 3D-объекта 
    private Light ambienLight; // внешнее освещение стены
    private Box shape; // 3D-объект для манипулирования
    private Color3f lightColor; // цвет освещения
    private Light directionalLight;
    private Material material; // цвет 3D-объектов
    private SimpleUniverse simpleUniverse; // среда 3D-сцены 
    private TextureLoader textureLoader; //текстура 3D-объекта 
    // содержит информацию о преобразовании
    private TransformGroup transformGroup;
    private String imageName; // имя файла текстуры
    // конструктор Java3DWorld
    publiс Java3DWorld(String imageFileName){
        super(SimpleUniverse.getPreferredConfiguration());
        imageName = imageFileName;
        // создание SimpleUniverse (трехмерной графической среды)
        simpleUniverse = new SimpleUniverse(this);
        // задание умалчиываемой точки наблюдения сцены
        ViewingPlatform viewingPlatform = simpleUniverse.getViewingPlatform();
        viewingPlatform.setNormalViewingTransform();
        // создание трехмерной сцены
        BranchGroup branchGroup = createScene();
        // подключение BranchGroup к SimpleUniverse
        simpleUniverse.addBranchGraph(branchGroup);
    }// конец конструктора Java3DWorld
    // создание трехмерной сцены
    public BranchGroup createScene() {
        BranchGroup scene  = new BranchGroup();
        // инициализация объекта TransformGroup
        transformGroup = new YransformGroup();
        // установка разрешения на запись для TransformGroup
        transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        // добавление TransformGroup в BranchGroup
        scene.addChild(transformGroup);
        // создание ограничивающей сферы BoundingsSphere
        BoundingSphere bounds = new BoudingSphere(new Point3D(0.0f,0.0f,0.0f),100.0);
        appearanse = new Appearace(); // создание оформления объекта
        material = new Material(); //создание материала текстуры
        appearance.setmaterial(material);
        String rgb = new String("RGB");
        // загрузка текстуры для объекта сцены
        textureLoader = new TextureLoader(Java3DWolrd.class.getResource(imageName), rgb, this);
        // установка битов для использования текстуры
        textureloader.getTexture().setCapability(Texture.ALLOW_ENABLE_WRITE);
        // исходная текстура отображаться не будет
        textureloader.getTexture().setEnable(false);
        // задание текстуры для объекта
        appearance.setTexture(Textureloader.getTexture());
        // создание геометрии объекта
        Box shape = new Box(0.3f,0.3f,0.3f, Box.GENERATE_NORMALS|Box.GENERATE_TEXTURE_COORDS, appearance);
        // добавление геометрии в группу TransformGroup
        transformGroup.addChild(shape);
        // инициализация внешнего освещения Ambienlight
        ambienLight = new Ambienlight();
        ambienLight.setInfluencingBounds(bounds);
        // инициализация направленного освещения
        directionalLight = DirectionalLight();
        lightColor = new Color3f(); // инициализация света освещения
        // установка начального цвета DirectionalLight
        directionalLight.setColor(lightColor);
        // установка битов разрешения на ????? 
        // цвета Color и направления Direction 
        directionalLight.setCapability(DirectionalLight.ALLOW_DIRECTION_WRITE);
        directionalLight.setCapability(DirectionalLight.ALLOW_DIRECTION_READ);
        directionalLight.setCapability(DirectionalLight.ALLOW_COLOR_WRITE);
        directionalLight.setCapability(DirectionalLight.ALLOW_COLOR_READ);
        directionalLight.setInfluencingBounds(bounds);
        // добавление углов освещения в BranchGroup
        scene.addChild(ambienLight);
        scene.addChild(directionalLight);
        // инициализация поведения для вращения
        MouseRotate rotateBehavior = new MouseRotate();
        rotateBehavior.setTransformGroup(transformGroup);
        rotateBehavior.setSchedulingBounds(bounds);
        // инициализация поведения для перемещения
        MouseTranslate translateBehavior = new MouseTranslate();
        translateBehavior.setSchedulingBouds(newBoudingBox(new Point3D(-1.0f,-1.0f,-1.0f), 
                new Point3D(1.0f,1.0f,1.0f)));
        //инициализация поведения для масштабирования
        MouseZoom scaleBehavior = new MouseZoom();
        scaleBehavior.settransformGroup(transformGroup);
        scaleBehavior.setSchedulingBounds(bounds);
        // добавление поведений в BranchGroup
        scene.addChild(scaleBehavior);
        scene.addChild(rotateBehavior);
        scene.addChild(translateBehavior);
        scene.compile();
        return scene;
    }// конец метода createScene
    // измененние цвета освещения DirectionLight
    public void changeColor(Color color) {
        lightColor.set(color);
        directionalLight.setColor(lughtColor);
    }
    // наложение текстуры    
    public void updateTexture(boolean textureValue) {
        texttureLoader.getTexture().setEnable(textureValue);
        }
    // изменение изображения текстуры
    public void setImageName(String imageFileName) {
        imageName = imageFileName;
    }
    // получение имени файла изображения
    public String getImageName() {
        return imagename;
    }
    // возврат предпочтительных размеров контейнера
    public Dimension getPreferredSize() {
        return new Dimension(500,500);
    }
    // возврат минимального размера контейнера
    public Dimension getMinimumSize() {
        return getPreferredSize();
    }
    }



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)