小编Chr*_*ell的帖子

你使用分布式版本控制吗?

我想听听使用分布式版本控制(即分布式版本控制,分散版本控制)以及他们如何找到它的人们的意见.你在用什么,Mercurial,Darcs,Git,Bazaar?你还在用吗?如果您以前使用过客户端/服务器rcs,您是否发现它更好,更糟或者只是不同?你能告诉我什么会让我跳上这个潮流?或者就此而言,我也有兴趣听取有负面经历的人的意见.

我目前正在考虑更换我们当前的源控制系统(Subversion),这是这个问题的推动力.

我特别感兴趣的是那些与其他国家的同事一起使用它的人,你的机器可能不会同时打开,而你的连接速度很慢.

如果你不确定分布式版本控制是什么,这里有几篇文章:

分布式版本控制简介

维基百科条目

version-control revision dvcs

37
推荐指数
4
解决办法
2802
查看次数

基于四元数的3D相机是否应该累积四元数或欧拉角?

因此,我编写了一个面向新程序员的基于四元数的3D相机,因此它们非常容易集成并开始使用.

在我开发它时,首先我将用户输入作为欧拉角,然后根据该帧的输入生成一个四元数.然后,我将拍摄相机的四元数并将其乘以我们为输入生成的四元数,理论上应该简单地将输入旋转添加到相机旋转的当前状态,事情就会变得既肥胖又快乐.让我们称之为:积累四元数,因为我们只存储和添加四元数.

但是我注意到这个方法存在问题.我使用的越多,即使我只是在一个欧拉角上旋转,比如Yaw,在一些迭代中,它会开始流血到另一个,Pitch说.这很轻微,但相当不可接受.

所以我做了一些更多的研究,并发现一篇文章说明积累欧拉角更好,所以相机将它的当前旋转存储为欧拉角,并且输入只是每帧添加到它们.然后我从每个帧生成一个四元数,然后用它来生成我的旋转矩阵.这解决了旋转出血问题进入不正确的轴.

那么任何Stackoverflow成员都能对这个问题有所了解吗?这是一种正确的做事方式吗?

math 3d quaternions euler-angles

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

你如何保持所有语言的顺畅?

我想我有点疯狂了.

现在,我正在使用以下语言(我只是在进行精神盘点):

  • C++ - 我们的游戏引擎
  • 汇编程序 - 低级调试和一些协处理器特定的例程
  • Lua - 我们的游戏引擎脚本语言
  • HLSL - 用于着色器
  • Python - 我们的构建系统和实用工具
  • Objective C/C++ - 适用于Mac和iPhone的游戏引擎平台代码
  • C# - 我们海外办事处开发的一些工具
  • ExtendScript - Photoshop导出工具
  • ActionScript - UI脚本
  • VBScript - 一些与电子表格相关的东西
  • PHP - 一些与Web相关的东西
  • SQL - 一些与Web和工具相关的东西

除此之外,过多的API通常有许多不同的方式来做同样的事情:std库,boost,.NET,wxWidgets,Cocoa,Carbon,Python的原生脚本库,Lua等,OpenGL,Direct3d,GDI ,Aqua,啊!

我发现自己无意中混淆了语言和api,在我遇到语法错误之前没有意识到我在做什么.我觉得我无法跟上它,我不可能精通所有这些领域.特别是在C++和Python领域之外,通过查看内存中的手册,我发现自己编程更多.

你有类似的问题吗?划分的想法让你更有效率?决定你想要保持精通的地方?组织提示?当你从Lua切换到C++时,你需要重新开始使用分号?我们的程序员为自己创造了多么复杂的东西?

欢迎任何想法!

programming-languages

11
推荐指数
2
解决办法
868
查看次数

如何使我的svn:externals策略适应git子模块?

我无法弄清楚如何将我的心态转变为git并遇到以下问题.我遇到的情况是我们有一个共享引擎和多个使用该引擎的项目.内部开发团队和第二方团队可能正在处理使用共享引擎的项目,并希望在开发期间尽可能多地使用共享引擎的HEAD,直到发布前几周,共享引擎将被标记并且分支,然后项目将使用该分支.项目团队通常一次只能处理一个项目,但可以在调试期间对共享引擎进行更改或添加功能.当他们提交这些更改时,我们的构建系统会运行以查找他们可能在提交时引入的任何问题.

我(我想)想要将这个模型与新项目/新公司一起使用.在svn中,结构是这样的:shared_engine

project_in_dev-+
               +- svn:external shared_engine:head
project_about_to_ship-+
                      +-svn:external shared_engine_rev1_branch
Run Code Online (Sandbox Code Playgroud)

这非常有效:

  • 项目开发人员可以执行一个命令来检查他们需要的所有依赖项
  • 项目开发人员可以轻松完成引擎工作并提交到共享引擎
  • 我们可以轻松地修改或更改项目使用的共享引擎与外部和修订
  • 您每日"从根项目更新"很容易获得引擎更新

好的,现在我已经转移到git,并且子模块SEEM是处理外部代码的新方法,但似乎我失去了一些功能.

  • 实际获取项目的所有依赖项是一个多步骤的过程.项目开发人员必须做一个git clone然后一个git子模块init/git子模块更新--recursive
  • 这是更新根项目和子模块的多步骤过程,因此如果另一个开发人员对子模块的更改与子模块进行了更改,则不会立即获得匹配的代码,并且可能会非常困惑
  • 子模块被锁定到特定的提交,如果你对子模块进行了更改,你将无法使它与共享引擎的头部一起工作
  • 我无法控制项目开发人员检查过的共享引擎的修订版,而没有提供更新内容的说明

所以我的问题如下:

  • 首先,关于子模块的上述假设是否正确?它似乎是基于我所读到的,但我不是百分之百确定,因为我还在搞清楚git
  • 如果我的假设是正确的,我是否正确处理问题?使用git时是否需要重新调整我的想法?换句话说,还有另一种方法可以做我想做的事情,需要以不同的方式思考这个过程吗?
  • 假设我没有吹过前两个,子模块不会做我想要的,会是什么?我读到了关于子树的合并,但那些看起来并不完全正确,因为看起来我无法将共享代码的更改重新放回到存储库中.

非常感谢您的帮助和耐心.如果不是很明显,我对git很新,我喜欢它并希望拥抱它,但我仍然有一些概念上的误解,因为我可能因多年使用中央回购而受到脑损伤.我想学习!此外,我整天都在rtfm'ing,并查看各种博客文章,stackoverflow问题等,我仍然没有得到它,我显然需要逐步说明我的情况.我没有同事可以询问这一点,西雅图地区的任何用户群可能都有一些git guru?:)

svn git git-submodules

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

如何使用Direct3D使灯光在世界范围内保持固定

我多年来一直在使用OpenGL,但是在第一次尝试使用D3D之后,我浪费了大量的时间来弄清楚如何使我的场景灯在世界上保持固定而不是固定在我的物体上.

在OpenGL中,光照位置就像使用MODELVIEW矩阵一样进行变换,因此为了在空间中修复灯光,您可以按照自己想要的方式设置模型,并调用glLightPosition然后为几何体设置它并进行几何调用.在D3D中没有帮助.

(评论 - 我最终找到了这个问题的答案,但我在网上或MSDN中找不到任何有用的东西.如果我能找到这个答案,那本可以省去几个小时. )

directx direct3d lighting

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

从场景图中获取绝对位置和旋转?

所以我遇到过几次这个问题:

我的 3D 场景图中有一些对象,它是其他对象的子对象。让我们称它们为 c (Child) 和 p (Parent)。

c 的位置是相对于 p 定义的。因此 c 可能有一个位置 (1,0,0) 但当然,由于 p 有一些其他位置,比如 (1,2,3),它实际上不是在我们世界的原始位置渲染的,而是在 (2 ,2,3)。

现在让我们说出于某种原因我们想知道 c 在世界坐标中的绝对位置(或旋转,问题是一样的),这通常是如何完成的?

c 是否应该知道它的父级并能够查询该位置并将其添加到它自己的位置,最终返回一个绝对位置?

3d scenegraph

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