代码之家  ›  专栏  ›  技术社区  ›  hanno

渲染纹理时颜色错误

  •  0
  • hanno  · 技术社区  · 5 年前

    SKTexture in Playground Rendered image

    完整代码:

    import GameKit
    import SpriteKit
    import PlaygroundSupport
    
    let source = GKPerlinNoiseSource()
    let noise = GKNoise(source)
    noise.gradientColors = [-1: #colorLiteral(red: 0.7537418008, green: 0.4404714704, blue: 0.2776784003, alpha: 1) , 1: #colorLiteral(red: 0.2008953691, green: 0.186568588, blue: 0.2595013976, alpha: 1)]
    let map = GKNoiseMap(noise, size: vector2(1.0, 1.0), origin: vector2(0.0, 0.0), sampleCount: vector2(Int32(256), Int32(256)), seamless: false)
    let texture = SKTexture(noiseMap: map )
    
    
    let ball = SCNSphere(radius: 1)
    let materials = SCNMaterial()
    materials.diffuse.contents = texture
    ball.materials = [materials]
    var node = SCNNode(geometry: ball)
    
    
    var sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
    var scene = SCNScene()
    sceneView.scene = scene
    PlaygroundPage.current.liveView = sceneView
    
    var cameraNode = SCNNode()
    cameraNode.camera = SCNCamera()
    cameraNode.position = SCNVector3(x: 0, y: 0, z: 3)
    scene.rootNode.addChildNode(cameraNode)
    scene.rootNode.addChildNode(node)
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   hanno    5 年前

    我不明白为什么会这样(我怀疑这与gamma校正有关),但这里有一个解决方法:

    将纹理转换为UIImage,然后将UIImage指定给材质的漫反射内容。显示正确的颜色。