Articles of C ++

计算vertex_normals(vn)会导致难看的线条C ++ / openGL

我试图为我正在进行的一个项目程序化地产生行星。 通过添加噪声到每个顶点,我能够生成海拔,但没有更新我的着色器的顶点法线。 它最初看起来像下面的图片。 当我尝试重新计算顶点法线时,我得到了一些难看的尖锐线条,这很可能是我parsing模型的结果。 这是我用来重新计algorithm线的代码: for (auto &x : normals)x = vec3(0); //zero normals vec3 facenormal; //buffer //indices is the faces/triangles indexed, in pairs of 3. for (size_t i = 0; i<indices.size();) { facenormal = cross( (shape[indices[i + 1]] – shape[indices[i]]), (shape[indices[i + 2]] – shape[indices[i]]) ); normals[indices[i++]] += facenormal; normals[indices[i++]] += facenormal; normals[indices[i++]] += […]

当我点击另一个button时,如何创建一个button?

我需要帮助。 当我点击一个button,我想创建一个新的button。 我的代码,但是,创建四个button。 我该怎么办? using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; public class AddButton : MonoBehaviour { public GameObject prefabButton; public RectTransform ParentPanel; public Button saveButton; void Update() { if (Input.GetMouseButton(0)) { // for (int i = 0; i < 2; i++) { GameObject button = (GameObject)Instantiate(prefabButton) as GameObject; button.transform.SetParent(ParentPanel, false); button.transform.localScale = new […]

用于DirectX 11的.obj文件阅读器

这是一个星期,我仍然无法解决这个问题。 我需要将.obj文件转换为我的框架可读和可绘制的数据。 我有一个主要问题:指标。 我想我得到的顶点正确(我在debugging器中检查,一切都很好),但是当我画我的模型总是出错。 我看到模型的形状,但没有看到一些三角形。 我认为这是一个顺时针/逆时针绘图的问题。 我从搅拌机中导出了一个立方体,看看如何完成,我拿着笔和纸,手工绘制,然后按照程序为我创建的索引,我看到它使用不同的索引顺序,在我的程序中不起作用。 对于i立方体,我使用“f”字所描述的索引创建36个顶点。 每个顶点都有纹理坐标和法向量。 从指数我拿顶点索引,我用这些来绘制立方体,但它不工作。 我跟着这个教程进入到我应该如何脚本的转换器( http://www.opengl-tutorial.org/beginners-tutorials/tutorial-7-model-loading/ ),我修改了代码,使其工作的DirectX绘图(这是类似于我认为的OpenGL),但它根本不工作。 void OBJLoader::loadOBJFromFile(char * fileName, std::vector<Vertex::Basic32> &output, std::vector<UINT> &vertexIndicesFinal) { UINT numberOfVertices = 0, numberOfNormals = 0, numberOfUVs = 0, numberOfFaces=0; std::vector<Vertex::Basic32> outputDaMettere; std::vector< UINT> vertexIndices, uvIndices, normalIndices; std::vector< XMFLOAT3 > temp_vertices; std::vector< XMFLOAT2 > temp_uvs; std::vector< XMFLOAT3 > temp_normals; std::vector<XMFLOAT3> outVertices; std::vector<XMFLOAT3> […]

统一看一个轴上的旋转问题

嘿,我想要一个对象只在一个轴上看另一个对象,当我在灰色立方体周围旋转白色立方体时(灰色看看脚本),灰色立方体在目标经过中间并立即翻转右边。 我该如何解决这个问题,以便旋转是正常的。 下面是立方体(目标,白色)。 以下是当立方体(目标)通过另一侧时发生的情况,正如灰色立方体水平翻转的纹理所示。 下面是应该如何(纹理显示差异) 码: Quaternion lookAngle = Quaternion.LookRotation(targetPos, Vector3.up); 提前致谢!

虚幻引擎4.15错误C ++ | 错误:UBT错误:无法产生项目UE4Editor-ProjectName.dll

我已经尝试安装Windows 8.1 SDK,但没有奏效。 任何帮助? 我在使用Visual Studio 2017的Windows 10上运行。创建项目时出现此错误。 错误日志: The project could not be compiled. Would you like to open it in Visual Studio? Running C:/Program Files/Epic Games/UE_4.15/Engine/Binaries/DotNET/UnrealBuildTool.exe ThisIsGoingToWork Development Win64 -project="C:/Users/AaronX/Documents/Unreal Projects/ThisIsGoingToWork/ThisIsGoingToWork.uproject" -editorrecompile -progress -NoHotReloadFromIDE Performing full C++ include scan (building a new target) Creating makefile for ThisIsGoingToWork (no existing makefile) @progress push 5% […]

我应该使用哪种types的碰撞检测?

所以在过去的一周里,我一直在摸索SAT(分离轴定理)。 我知道它是如何工作的,但似乎无法得到正确的C#代码。 总是有一个面孔或边缘让我的球员穿越障碍。 所以我想知道,如果我正在采取艰难的方式,我不需要SAT来达到我想达到的目标。 我的游戏涉及: – 三维立方体有时会在一个角度(不是90的倍数) – 没有太多的立方体(所以我不需要我的碰撞检测太便宜) – OBB碰撞 那么对于我来说碰撞的最好的select是什么? 如果SAT是我的select,它将在C#中看起来像什么? 编辑 我的星期六代码: var n1 = (bb1.BCK_TOP_LFTCorner – bb1.BCK_BTM_LFTCorner).Normalized(); var n2 = (bb1.BCK_BTM_LFTCorner – bb1.BCK_BTM_RGTCorner).Normalized(); var n3 = (bb1.FRT_BTM_LFTCorner – bb1.BCK_BTM_LFTCorner).Normalized(); var n4 = (bb2.BCK_TOP_LFTCorner – bb2.BCK_BTM_LFTCorner).Normalized(); var n5 = (bb2.BCK_BTM_LFTCorner – bb2.BCK_BTM_RGTCorner).Normalized(); var n6 = (bb2.FRT_BTM_LFTCorner – bb2.BCK_BTM_LFTCorner).Normalized(); var norms = new […]

碰撞检测和边界框创建

我正在尝试创建边界框。 我的目标不是用x,y和z坐标来创建它们。 但是,我会加载一个模型或者渲染一个形状 – 比如飞机。 那么algorithm应该能够在它周围创建有效的边界框。 我在编写opengl。 你能帮我解决吗?

使用卷显示UE4 C ++项目中的秘密门

我正在做一个迷宫项目,我想有秘密的门。 我的基本想法是,当玩家在触发器音量范围内时,墙壁被破坏,并按下一个button。 我知道实现代码的基本方法,但我主要关心的是如何处理这些卷。 我应该创建一个类,也许叫“秘密控制器”,其中包含的代码说: “如果玩家在框中[i]并按下火,摧毁门[i]” 这似乎是可行的,但我宁愿知道之前,我创造了一大堆东西,我只需要稍后删除。 感谢帮助的人们!

我怎样才能改变InvokeRecuating统一时间?

我有一个滑块在暂停菜单将有一个最小值为1和最大值5,它可以很好地工作在invokerepeat函数它不会改变它拖动滑块后保持相同的速度,但Debug.Lo显示当前滑块值和invokerepeat速度没有改变是否有办法处理生成速度? Player.m1是浮动,当我给5f或类似的东西在invokerepeate它工作正常 使用UnityEngine; public class Gen1 : MonoBehaviour { public GameObject rocks; int scr = 0; public int m=0; float n11=Player.m1; float sp; // Use this for initialization void Start() { //if (Player.m1 == 5 || Player.m1==4) { InvokeRepeating ("CreateObstacle", Player.m1,5f);//Here speed handels //} else { //InvokeRepeating ("CreateObstacle", 4f, 5f);//Here speed handels //} Debug.Log ("current […]

如何在编辑器中显示自定义UnityEvents?

我最近偶然发现了UnityEngine.Events.UnityEvent类,它看起来很酷,所以我开始在一个项目中使用它。 然后我决定使用generics来添加一些参数,如下所示: [System.Serializable] public class BarkEvent<GameObject> : UnityEvent<GameObject> {} public class MyOtherClass : MonoBehavior { public BarkEvent<GameObject> bark; // … Other stuff … } 但是现在它并没有在编辑中出现,这使得我的用户更难联系。 有没有办法使统一的事件与Unity编辑器中显示额外的参数?