Можем ли мы создать текстуру задней стороны в реальности, Arkit и Swift Application за один раз?IOS

Программируем под IOS
Ответить
Anonymous
 Можем ли мы создать текстуру задней стороны в реальности, Arkit и Swift Application за один раз?

Сообщение Anonymous »

Я использую приведенный ниже код, чтобы создать плоский объект, используя координаты, которые мы генерируем в классе TwoPointCircRiR поверхность или ничего.func createMetalMeshEntity(from dots: [TwoPointCircleView.Dots]) -> ModelEntity {

let flatVertices: [Double] = dots.flatMap { [Double($0.x), Double($0.y)] }
let frontIndices = Earcut.tessellate(data: flatVertices)
var positions: [SIMD3] = []
var indices: [UInt32] = []

// Front face (z = 0)
for dot in dots {
positions.append(SIMD3(Float(dot.x), Float(dot.y), posZ))

}

let dx = maxX - minX
let dy = maxY - minY
var uvs: [SIMD2] = []
let maxDim = max(dx, dy)

// Generate front face UVs
for dot in dots {
let u = (Float(dot.x) - Float(minX)) / Float(maxDim)
let v = (Float(dot.y) - Float(minY)) / Float(maxDim)
uvs.append(SIMD2(u, v))
}

// Front face
indices += frontIndices.map { UInt32($0) }

// Collection center points of pieces.
let center = centroid(of: positions)
centers.append(center)

// Descriptor
var descriptor = MeshDescriptor(name: "MetalSemicircle")
descriptor.positions = MeshBuffers.Positions(positions)
descriptor.primitives = .triangles(indices)

let tileFactor: Float = 1.0

let scaledUVs = uvs.map { uv in
SIMD2(uv.x * tileFactor, uv.y * tileFactor)
}

descriptor.textureCoordinates = MeshBuffers.TextureCoordinates(scaledUVs)

// Create mesh + entity
let meshResource = try! MeshResource.generate(from: [descriptor])
var applidedMaterial = PhysicallyBasedMaterial()
var solvedMaterial = PhysicallyBasedMaterial()

solvedMaterial.baseColor = .init(texture: .init(texture))
solvedMaterial.metallic = 0.5
solvedMaterial.roughness = 0.5
solvedMaterial.faceCulling = .none
face0Materials.append(solvedMaterial)

if faces[0].pieceModel.count < puzzleNumber {

var tempMaterial = PhysicallyBasedMaterial()
tempMaterial.baseColor = .init(tint: .gray)
tempMaterial.metallic = 0.5
tempMaterial.roughness = 0.5

applidedMaterial = tempMaterial

} else {

applidedMaterial = solvedMaterial

}

let entity = ModelEntity(mesh: meshResource, materials: [applidedMaterial])
entity.generateCollisionShapes(recursive: true)

return entity
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... tion-in-on
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»