这个问题的背景是我试图将射线追踪器的输出与Matlab的3d绘图仪结合起来。在进行射线跟踪时,不需要对呈现的图像应用透视图转换。你可以在下面的图片中看到这一点。基本上,光线与视口的交点将自动调整以进行透视缩放。
假设我已经创建了一个光线跟踪图像(因此我得到了我的相机,焦距,视口尺寸等)。如何在Matlab的3d绘图环境中创建完全相同的视图?
下面是一个示例:
clear
close all
evec = [0 200 300]; % Camera position
recw = 200; % cm width of box
recl = 200;
这是我最近问的一个问题的更新,但在我尝试了一些东西后出现了新的问题。我想要的是在屏幕上画多个圆圈。我为circle对象创建了一个类。在我的渲染器类中,我创建了这些圆的数组列表,每个圆都有不同的位置。当调用绘制时,它只绘制其中的一个。我记录了发生了什么,每个对象都被调用来绘制,但似乎只有一个出现在屏幕上。不只是我的圈子。在整个个人测试中,OpenGL ES 2.0只会在屏幕上绘制一个对象。我不知道该怎么解决这个问题。在OpenGL ES 2.0中有什么特殊的事情需要我去做吗?这是我的代码。忽略现在令人难以置信的草率和低效的代码。我意识到了这一点,并将在稍后修复它。下面是我的circle对象类:
下面的代码将画一个雪人,然后用键盘键控制摄像机。但它只是画了几个点。
我试着增加球体的半径,但它仍然不能正常工作。代码中有什么问题?如果是关于维度的,那么正确的维度应该是什么?
输出应该像这个图像-
from __future__ import division
import time
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import sys, math
# angle of rotation for the camera direction
angle=0.0;
#