首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义SCNGeometry不将漫反射内容显示为纹理

自定义SCNGeometry不将漫反射内容显示为纹理
EN

Stack Overflow用户
提问于 2018-02-11 11:42:18
回答 1查看 643关注 0票数 0

我正在创建一个自定义的SCNGeometry。首先,我将其开发为平面。它会显示,我可以对它的漫反射内容应用颜色,但是如果我尝试应用任何东西,比如UIImage或CALayer,它就会显示为白色。

代码:

代码语言:javascript
复制
let positions = [
    SCNVector3(-1, 0, 0),
    SCNVector3(1, 0, 0),
    SCNVector3(-1, 0, -1),
    SCNVector3(1, 0, -1)
]

let indices: [UInt8] = [
    0, 1, 2,
    1, 3, 2
]

let vertexSource = SCNGeometrySource(vertices: positions)

let indexData = Data(bytes: indices, count: indices.count)

let element = SCNGeometryElement(
    data: indexData,
    primitiveType: SCNGeometryPrimitiveType.triangles,
    primitiveCount: indices.count / 3,
    bytesPerIndex: 1)

let geometry = SCNGeometry(
    sources: [vertexSource],
    elements: [element])

geometry.firstMaterial?.diffuse.contents = UIImage(named: "homer")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 00:17:37

若要能够为几何体设置纹理,还需要提供UV坐标(纹理坐标)源。

代码语言:javascript
复制
let textureCoordinates = [
    CGPoint(x: 0, y: 0),
    CGPoint(x: 1, y: 0),
    CGPoint(x: 0, y: 1),
    CGPoint(x: 1, y: 1)
]

let uvSource = SCNGeometrySource(textureCoordinates: textureCoordinates)

let element = ...

let geometry = SCNGeometry(
    sources: [vertexSource, uvSource],
    elements: [element])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48728060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档