小编jbi*_*lls的帖子

将glm :: lookat矩阵转换为四元数并返回

我正在使用glm创建一个相机类,我遇到了一些lookat函数的问题.我使用四元数来表示旋转,但我想使用glm的预先编写的lookat函数来避免重复代码.这是我现在的lookat功能:

void Camera::LookAt(float x, float y, float z) {
    glm::mat4 lookMat = glm::lookAt(position, glm::vec3(x, y, z), glm::vec3(0, 1, 0));
    rotation = glm::toQuat(lookMat);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我打电话时LookAt(0.0f,0.0f,0.0f),我的相机没有旋转到那一点.当我glm::eulerangles(rotation)在lookat 调用之后调用时,我得到一个具有以下值的vec3:(180.0f,0.0f,180.0f).position是(0.0f,0.0f,-10.0f),所以我根本不应该有任何旋转来看0,0,0.这是构建视图矩阵的函数:

glm::mat4 Camera::GetView() {
    view = glm::toMat4(rotation) * glm::translate(glm::mat4(), position);
    return view;
}
Run Code Online (Sandbox Code Playgroud)

为什么我没有得到正确的四元数,如何修复我的代码?

c++ opengl quaternions glm-math

8
推荐指数
2
解决办法
5090
查看次数

通过全局python导入本地模块

我有2个python文件。一种是尝试导入第二种。我的问题是第二个名为math.py。我不能重命名。当我尝试调用位于math.py内的函数时,无法执行此操作,因为我最终使用了全局数学模块。如何导入本地文件而不是全局文件。我正在使用Python 2.7,这(大致)是我的导入语句:

cstr = "math"
command = __import__(cstr)
Run Code Online (Sandbox Code Playgroud)

稍后我尝试:

command.in_math_py_not_global()
Run Code Online (Sandbox Code Playgroud)

编辑:一个更完整的示例:

def parse(self,string):
    clist = string.split(" ")
    cstr= clist[0]
    args = clist[1:len(clist)]
    rvals = []
    try:
        command = __import__(cstr)
        try:
            rvals.extend(command.main(args))
        except:
            print sys.exc_info()
    except ImportError:
        print "Command not valid"
Run Code Online (Sandbox Code Playgroud)

python import python-2.7

5
推荐指数
1
解决办法
3671
查看次数

Google任务更新错误

我正在尝试使用以下代码更新任务:

function updtsk(task,id)
{
  var url = 'https://www.googleapis.com/tasks/v1/lists/@default/tasks/'+id;
  var req = {
    'method': 'PUT',
    'headers': {
      'Content-type': 'application/json'
    },
    'body': JSON.stringify(task)
  };
  var addDone = function(resp, xhr) {
    if (xhr.status != 200) {
      notifyFailure('Couldn\'t update task.', xhr.status);
      return;
    }

    //notifySuccess(task['title']);
  }

  oauth.sendSignedRequest(url, addDone, req);
}
Run Code Online (Sandbox Code Playgroud)

但是我得到以下错误:

"{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}
"
Run Code Online (Sandbox Code Playgroud)

更新正文如下:

{
 'title': $(this).val()
};
Run Code Online (Sandbox Code Playgroud)

我正在使用chrome_ex_oauth api并可以使用一些帮助.

javascript google-chrome-extension

3
推荐指数
1
解决办法
1525
查看次数

图像被使用Swing切断

我正在写一个基于平铺的平台游戏.目前我正试图让400块瓷砖一次显示出来.这是我的小组.在顶部和左侧,一切都很好,但在右侧和底部,图像被几个像素切断.每张图片为32*32.全部blocks都是初始化的.没有为空.这有什么不对?

public class Pane extends JPanel implements ActionListener{

    private static final long serialVersionUID = 1L;
    Timer timer;
    boolean setup = false;
    Block[][] blocks;
    Level level;
    public Pane()
    {
        level = new Level();
        level.Generate();
        blocks = level.Parse();
        setBackground(Color.WHITE);
        timer = new Timer(25, this);
        timer.start();
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        for(Block[] b : blocks)
        {
            for(Block bx : b)
            {
                // Debug code if(bx.letter.equals("D"))
                // Debug codeSystem.out.println(bx.y*32 +" = "+ bx.x*32);
                g2d.drawImage(bx.bpic, bx.x*32, bx.y*32, …
Run Code Online (Sandbox Code Playgroud)

java eclipse size swing

3
推荐指数
1
解决办法
826
查看次数

Glm 四元数观察函数

我正在尝试编写一个使用 glm::quat 来表示旋转的观察函数,基于这个答案。然而,我在获得正确的角度时遇到了麻烦。这是我的观察功能:

void Camera::LookAt(float x, float y, float z) {
    glm::vec3 lookVector = glm::vec3(x, y, z);
    assert(lookVector != position);

    glm::vec3 direction = glm::normalize(lookVector-position);
    float dot = glm::dot(glm::vec3(0, 0, -1), direction);
    if (fabs(dot - (-1.0f)) < 0.000001f)
        rotation = glm::quat(RadiansToDegrees(M_PI), 0.0f, 1.0f, 0.0f);
    if (fabs(dot - (1.0f)) < 0.000001f)
        rotation = glm::quat();

    float angle = RadiansToDegrees(acosf(dot));

    glm::vec3 cross = (glm::cross(glm::vec3(0, 0, -1), direction));
    rotation = glm::normalize(glm::angleAxis(angle, cross));

    std::cout << glm::eulerAngles(rotation).x  << " " << glm::eulerAngles(rotation).y << " " …
Run Code Online (Sandbox Code Playgroud)

c++ opengl quaternions glm-math

2
推荐指数
1
解决办法
7659
查看次数

在shadowmap之外进行采样会导致异常行为

在我的灯光视图之外采样点时,我遇到了问题,因此我的阴影贴图.这是我在使用GL_TEXTURE_WRAP设置为GL_CLAMP或GL_CLAMP_TO_EDGE的纹理参数创建阴影贴图时得到的:

我已经确定在这里发生的是,地图一侧阴影贴图之外的每个点都有阴影,而地图外侧的每个点都没有阴影被认为是没有阴影的.我认为这是GL_CLAMP和GL_CLAMP_TO_EDGE的预期行为,但我没有在网上找到的各种阴影映射示例中看到这个问题.通过使用GL_CLAMP_TO_BORDER并设置边框颜色来删除其中一些问题,但这也不是我在我看过的任何示例中看到的修复.在遮蔽聚光灯时这是一个预期的问题,如果是这样,通常的修复方法是什么?

opengl opengl-4 shadow-mapping

1
推荐指数
1
解决办法
694
查看次数