Профиль пользователя заблокирован сроком с 20 сентября 2021 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу 3D
  • Какую книгу выбрать для изучения компьютерной графики?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Язык совершенно не важен.
    Я изучал компьютерную графику по книге Майкла Ласло "Вычислительная геометрия". Там код на C++, но я переводил всё на Pascal и Delphi (в 1996-1997 годах я знал только эти языки и с С++ не дружил). Одна эта книга сильно меня прокачала.
    Потом учил 3D по книге Иванова и Батракова "Трёхмерная графика", на основе которой у меня получилось с нуля написать трассировщик лучей с тенями и CSG.
    OpenGL пришлось изучать по докам, потому что книг тогда по этой библиотеке не было
    Ответ написан
  • Построения в 3D карту из ч\б 2D карты?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Координата Z-это яркость. Чёрный - z=0, белый - максимальная высота.
    X,Y известны.
    Можно строить 3D
    Ответ написан
  • Как посчитать столкновение двух произвольных сеток вершин?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Технология довольно старая и давно везде реализована.
    Я уверен, что смогу минут за 5-10 найти этот алгоритм, потому что он открыт и лежит в открытом доступе.
    Неужели ты не искал ещё?
    P.S. Извини, за тебя бесплатно искать я не буду
    Ответ написан
  • Как определить пересечение двух объектов 3d?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Здесь нужно знать геометрию объектов, а не их центр и матрицы преобразований.
    Ещё нужно знать из каких примитивов они состоят. Если это сфера, то алгоритм один, если объекто сложный и состоит из набора плоскостей (треугольников), то надо проверять пересечения каждой этой микроплоскости.
    Если это OpenGL, то задача решается через Stencil Buffer
    Короче говоря, оооочень мало данных для ответа на вопрос.

    Если упростить, то можно "вписать" объекты в сферу или параллелепипед и проверять коллизии этих простых объектов. Это уже школьная геометрия, 6-й класс.
    Ответ написан
    Комментировать
  • Не работает тест глубины в OpenGl и SFML. Что делать?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Попробуй поменять порядок перечисления вершин на обратный между
    glBegin(GL_QUADS) ... glEnd

    UPD: У меня есть вот такой код отрисовки куба на Java, попробуй его:
    class Cube {
        
        private FloatBuffer mVertexBuffer;
        private FloatBuffer mColorBuffer;
        private ByteBuffer  mIndexBuffer;
            
        private float vertices[] = {
                                    -1.0f, -1.0f, -1.0f,
                                    1.0f, -1.0f, -1.0f,
                                    1.0f,  1.0f, -1.0f,
                                    -1.0f, 1.0f, -1.0f,
                                    -1.0f, -1.0f,  1.0f,
                                    1.0f, -1.0f,  1.0f,
                                    1.0f,  1.0f,  1.0f,
                                    -1.0f,  1.0f,  1.0f
                                    };
        private float colors[] = {
                                   0.0f,  1.0f,  0.0f,  1.0f,
                                   0.0f,  1.0f,  0.0f,  1.0f,
                                   1.0f,  0.5f,  0.0f,  1.0f,
                                   1.0f,  0.5f,  0.0f,  1.0f,
                                   1.0f,  0.0f,  0.0f,  1.0f,
                                   1.0f,  0.0f,  0.0f,  1.0f,
                                   0.0f,  0.0f,  1.0f,  1.0f,
                                   1.0f,  0.0f,  1.0f,  1.0f
                                };
       
        private byte indices[] = {
                                  0, 4, 5, 0, 5, 1,
                                  1, 5, 6, 1, 6, 2,
                                  2, 6, 7, 2, 7, 3,
                                  3, 7, 4, 3, 4, 0,
                                  4, 7, 6, 4, 6, 5,
                                  3, 0, 1, 3, 1, 2
                                  };
                    
        public Cube() {
                ByteBuffer byteBuf = ByteBuffer.allocateDirect(vertices.length * 4);
                byteBuf.order(ByteOrder.nativeOrder());
                mVertexBuffer = byteBuf.asFloatBuffer();
                mVertexBuffer.put(vertices);
                mVertexBuffer.position(0);
                    
                byteBuf = ByteBuffer.allocateDirect(colors.length * 4);
                byteBuf.order(ByteOrder.nativeOrder());
                mColorBuffer = byteBuf.asFloatBuffer();
                mColorBuffer.put(colors);
                mColorBuffer.position(0);
                    
                mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
                mIndexBuffer.put(indices);
                mIndexBuffer.position(0);
        }
    
        public void draw(GL10 gl) {             
                gl.glFrontFace(GL10.GL_CW);
                
                gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
                gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer);
                
                gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
                gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
                 
                gl.glDrawElements(GL10.GL_TRIANGLES, 36, GL10.GL_UNSIGNED_BYTE, 
                                mIndexBuffer);
                    
                gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
                gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
        }
    }
    Ответ написан
  • Как написать свой 3D рэндер?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    RayTracing, OpenGL, либо реализовать свой вариант отображения 3D-сцены
    Ответ написан
    Комментировать
  • Сложно ли создавать 3D игры, какие знания нужны для создания 3D игр?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Почитай цикл статей
    https://habr.com/ru/post/248153/
    Ответ написан
    Комментировать
  • Кто знает про 3Д очки(шлем виртуальной реальности)?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Есть очки со своим встроенным дисплеем, сенсорами, датчиками, гироскопами. Разрешение дисплея + напичканность датчиками влияет на стоимость.
    Есть очки, в которые вставляется смартфон. Это самый дешёвый вариант, т.к. дисплей и сенсоры берутся от смартфона.
    Набери в Google Play в поиске "VR" и поставь 5-10 приложений. Тогда поймёшь что это такое.
    Ответ написан
    Комментировать