OC纹理投射、转换节点属性讲解0022
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC纹理投射、转换节点属性讲解0022相关的知识,希望对你有一定的参考价值。
参考技术A 文理投射在这里,您可以指定纹理投影类型。如果您的对象是简单的几何对象,则其中某些选项会正确运行。例如,如果您有一个多维数据集对象,则可以为该对象分配一个盒子投影。但是,如果您有复杂而详细的对象,则必须手动准备对象的UV贴图。是的,我们知道,准备UV贴图可能会很烦人,但是此过程是必须的,因此无法逃脱。准备好此UV贴图后,可以选择“网格UV”作为投影类型。现在,让我们解释下拉菜单中的选项:
盒子
盒子投影提供了一种在没有太多变形的情况下将纹理映射到任何对象上的快速方法,但是取决于表面的形状,盒子的投影平面之间的接缝在渲染中可能是可见的。
圆柱型
圆柱投影将纹理贴图包裹在具有圆柱形状的表面上。圆柱投影提供了一种在粗糙的圆柱表面上绘制纹理的快速方法,而不会产生太大的变形,但是根据表面的形状,渲染时可以看到纹理的接缝
mesh UV
“ Mesh UV”投影节点使用网格的UV坐标将纹理映射到表面。这是所有纹理的默认行为,因此在许多情况下,在基于UV映射纹理时不必使用投影节点。UV集保留供将来更新。
透视
透视图贴图采用世界空间坐标,并将X和Y坐标除以Z坐标。这是对投影仪建模的有用方法(使用带有该投影作为分布的纹理,并使用黑色边框模式)。它也可以用于摄像机映射。我们将在页面末尾的“用法样本”中解释这种用法。
球形
球形投影对U和V坐标执行纬度-经度映射。您还可以针对环境纹理和IES灯光分布进行此投影。我们将在页面末尾的“用法样本”中解释这种用法。
平面的
Triplanar Projection节点与“ Triplanar”节点结合使用。它将在主X,Y或Z轴方向上投影图像,使您可以羽化每个投影之间的混合。您可以为每个轴(正轴和负轴)使用单个图像或单独的图像。
Triplanar投影节点提供了一种在没有UV的情况下在任何对象上映射纹理的快速方法,并提供了在每个投影轴局部进行纹理变换的可能性。Triplanar Map节点有六个输入,分别代表正,负X,Y和Z平面。可以将相同或不同的纹理节点映射到这些输入中的每一个。
此纹理用于在世界空间或对象空间坐标中沿三个平面(X,Y和Z)映射多个纹理的样本,并将其混合以创建一个无缝纹理。在大多数情况下,它无需使用UV映射的网格即可映射纹理。
Triplanar贴图节点将材质贴图划分为六个区域,分别对应于X,-X,Y,-Y,Z和-Z轴。最初,纹理将覆盖对象的整个表面,但三面贴图将纹理贴图的可见性限制在对该纹理有效的相应轴上。
该节点可以进一步依赖于三面投影节点,该三面投影节点将纹理的投影定位到相应的平面,并允许纹理UV相对于该投影轴进行变换。例如,您可以将“ Projection”节点分配给其中一个纹理,然后从选项中选择“ Triplanar”。
XYZ转UVW
XYZ到UVW的平面映射也称为平面映射。此映射类型获取世界或对象空间中的坐标,并将其用作UVW坐标。
位置
在这里,您可以设置将“纹理”用作UVW的坐标系。有2个选项:“对象空间”和“世界空间”。对象空间基于场景中对象的局部坐标。世界空间基于场景坐标。在纹理创建中,您经常会根据自己的目的同时使用这两种方法。
外部转换
根据您选择的投影类型,可以将场景中的对象用作纹理转换。在“位置”选项中选择“世界空间”时,将显示最佳结果。
内部转换
根据您选择的投影类型,还可以从此处进行纹理转换。它具有与我们前面介绍的“转换”节点相同的功能。
转换节点设置
类型
轴命令
“类型”选项正下方的下拉菜单用于确定轴顺序。根据您的目的,您可以选择其中之一。这些选项为旋转参数提供了更令人满意的结果。
RX / RY / RZ
在这里,您可以调整纹理的旋转。如有必要,可以将其与Type和Order一起使用。
SX / SY / SZ
在这里,您可以调整纹理的比例。如果选择“锁定宽高比”,则所有三个参数的比例值将相同。如果需要,可以将比例值与类型和顺序一起使用。
TX / TY / TZ
在这里您可以调整纹理的位置。如有必要,可以将其与Type和Order一起使用。
swift: 将 SKShapeNode 转换为 SKSpriteNode -> 无纹理
【中文标题】swift: 将 SKShapeNode 转换为 SKSpriteNode -> 无纹理【英文标题】:swift: converting SKShapeNode into SKSpriteNode -> No texture 【发布时间】:2015-03-09 11:02:52 【问题描述】:我正在尝试通过首先将 SKShapeNode 转换为纹理来将 SKShapeNode 转换为 Sprite 节点。然而结果是不可见的精灵。物理主体通常在那里,但没有显示图形。我想我尝试转换 SKShapeNode 的方式有问题,但我想不出是什么。你对出了什么问题有感觉吗?感谢所有帮助!
let createdShape = SKShapeNode(path: path)
createdShape.physicsBody = SKPhysicsBody(edgeLoopFromPath: createdShape.path)
createdShape.physicsBody?.categoryBitMask = PhysicsCategory.Shape
createdShape.physicsBody?.contactTestBitMask = PhysicsCategory.None
createdShape.name = "paintedArea"
createdShape.strokeColor = shapeBorderColor
createdShape.lineWidth = 5.0
createdShape.fillColor = shapeFillColor
createdShape.alpha = 1.0
createdShape.zPosition = shapeZPosition
let texture = view?.textureFromNode(createdShape)
println(texture?.description)
let sprite = SKSpriteNode(texture: texture)
sprite.physicsBody = createdShape.physicsBody
sprite.position = createdShape.position
sprite.color = UIColor.blueColor()
self.addChild(sprite)
【问题讨论】:
你的 shapenode 可见吗?我看到你正在使用一个路径来初始化它。如果将 shapenode 添加到视图中,它是否可见? 是的,shapenode 工作正常,如果我将它添加到视图中。 @user3673836 听起来您自己解决了这个问题。您可能想添加答案以供其他人学习,我将删除我的答案,因为它不能解决问题 =) 【参考方案1】:啊,我明白了!我的z位置错了!创建的形状在我的背景图像之上,但新创建的精灵不在。真傻……
【讨论】:
以上是关于OC纹理投射、转换节点属性讲解0022的主要内容,如果未能解决你的问题,请参考以下文章
在.Net Core 3.1中使用NewtonSoft将DataTable转换为JSON字符串时如何使JSON字符串不包含'\u0022'或'\'等字符[重复]