【问题标题】:Custom Shape in Cocos3dCocos3d 中的自定义形状
【发布时间】:2014-04-12 11:09:43
【问题描述】:

我正在开发一个使用 cocos3d 的 iPhone 应用程序。我的问题是:如何在 cocos3d 中绘制自定义形状?例如圆柱体、以椭圆为底而不是圆形的圆柱体、多边形等。谁能指导我如何开始?

提前致谢

【问题讨论】:

    标签: objective-c cocos3d


    【解决方案1】:

    在 Cocos3D 中有很好的支持。

    CC3Mesh 具有用于为顶点内容分配空间的简单属性设置,以及用于获取和设置各种顶点内容的大量方法。确保您了解如何使用 vertexContentTypes 属性。

    源文件CC3ParametricMeshes.mCC3ParametricMeshNodes.m 包含许多以编程方式创建网格形状的示例。查看这些文件中的实现。

    【讨论】:

    • 谢谢你,比尔,我已经阅读了你建议的文件并编写了一个代码来绘制一个圆柱体,但我得到了奇怪的形状。但是,我正在使用一种能够正确生成顶点和索引的算法(我已经在 openGL 中对其进行了测试)。如果我发布了我的代码,你能帮我找出问题吗?
    • 我想我发现了问题:三角形似乎有一个透明的面和一个不透明的面。但这是怎么回事?我们该如何解决?
    • 听起来可能是缠绕顺序问题。确保你的三角形有一致的绕组。所有朝外三角形的逆时针缠绕是 OpenGL 的默认设置。但是,如果所有网格中的三角形都使用顺时针缠绕,则可以将网格节点的 shouldUseClockwiseFrontFaceWinding 属性设置为 YES,以使用相反的缠绕。
    • 谢谢比尔!就我而言,我有一个对多边形进行三角剖分的算法,因此生成的三角形具有随机顶点顺序。我通过将 shouldCullBackFaces 设置为 NO 解决了这个问题。
    • 很高兴您解决了问题。虽然避免剔除背面会起作用,但这意味着您将渲染两倍于您需要的面,这将影响性能。这对于小型模型可能不是问题,但如果您遇到性能问题,请考虑重新审视网格创建算法的缠绕顺序。
    猜你喜欢
    • 2020-04-12
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多