Я разрабатываю 3D -куб Rubik, используя Scenekit в Swift, и я сталкиваюсь с проблемой, когда цвета лиц куба не производят, как сплошные лица 3x3, как и ожидалось. Вместо каждой поверхности куба 3x3x3 (например, передняя поверхность зеленого цвета, левая поверхность в оранжевом и т. Д.). покрывая все лицо. Например, я вижу зеленый цвет (предназначенный для передней поверхности, +z) правильно на верхнем ряду, но он перемещается в нижний ряд или соседние лица вместо формирования сплошной зеленой 3x3. < /P>
Вот обзор моей настройки и проблемы: < /p>
Objective < /strong>: я хочу каждую лицо Рубик Куб (спереди, сзади, влево, справа, вверху, внизу), чтобы быть сплошным цветом для 9 кублетов, которые составляют это лицо (например, все кублеты с z = 1 должны быть окрашены в зеленую переднюю поверхность).
< /li>
текущее поведение < /strong>: цвета применяются частично или в фрагментированных узорах (например, ряд зеленого вверху, затем ряд Зеленый ниже, но не сплошное зеленое лицо 3x3). Это происходит для всех лиц (красный для +x, оранжевый для -x, белый для +y, желтый для -y, зеленый для +z, синий для -z).
подозреваемая проблема < /strong>: я подозреваю, что кублеты (Scnbox) могут быть повернуты, в результате чего материалы применяются к неправильным лицам или не в неправильной ориентации, но я был Невозможно подтвердить или исправить это.
Я разрабатываю 3D -куб Rubik, используя Scenekit в Swift, и я сталкиваюсь с проблемой, когда цвета лиц куба не производят, как сплошные лица 3x3, как и ожидалось. Вместо каждой поверхности куба 3x3x3 (например, передняя поверхность зеленого цвета, левая поверхность в оранжевом и т. Д.). покрывая все лицо. Например, я вижу зеленый цвет (предназначенный для передней поверхности, +z) правильно на верхнем ряду, но он перемещается в нижний ряд или соседние лица вместо формирования сплошной зеленой 3x3. < /P> Вот обзор моей настройки и проблемы: < /p> [list] [*] Objective < /strong>: я хочу каждую лицо Рубик Куб (спереди, сзади, влево, справа, вверху, внизу), чтобы быть сплошным цветом для 9 кублетов, которые составляют это лицо (например, все кублеты с z = 1 должны быть окрашены в зеленую переднюю поверхность). < /li> текущее поведение < /strong>: цвета применяются частично или в фрагментированных узорах (например, ряд зеленого вверху, затем ряд Зеленый ниже, но не сплошное зеленое лицо 3x3). Это происходит для всех лиц (красный для +x, оранжевый для -x, белый для +y, желтый для -y, зеленый для +z, синий для -z). [*] подозреваемая проблема < /strong>: я подозреваю, что кублеты (Scnbox) могут быть повернуты, в результате чего материалы применяются к неправильным лицам или не в неправильной ориентации, но я был Невозможно подтвердить или исправить это.
[/list] Вот мой код: cubescene: [code]import SwiftUI import SceneKit
class CuboScene: SCNScene { override init() { super.init() rootNode.eulerAngles = SCNVector3(0, 0, 0) // Ensure rootNode is not rotated rootNode.position = SCNVector3(0, 0, 0) // Ensure rootNode is at the origin rootNode.scale = SCNVector3(1, 1, 1) // Ensure no unexpected scaling
private func getFaceMaterial(x: Int, y: Int, z: Int) -> [SCNMaterial] { let colors: [UIColor] = [ // Right face (+X): red if x = 1, gray for x = 0 or -1 (x == 1) ? .red : .gray, // Left face (-X): orange if x = -1, gray for x = 0 or 1 (x == -1) ? .orange : .gray, // Top face (+Y): white if y = 1, gray for y = 0 or -1 (y == 1) ? .white : .gray, // Bottom face (-Y): yellow if y = -1, gray for y = 0 or 1 (y == -1) ? .yellow : .gray, // Front face (+Z): green if z = 1, gray for z = 0 or -1 (z == 1) ? .green : .gray, // Back face (-Z): blue if z = -1, gray for z = 0 or 1 (z == -1) ? .blue : .gray ] // print("Position (\(x), \(y), \(z)): Colors = \(colors)") // Debugging return colors.map { createMaterial(color: $0) } }
private func createMaterial(color: UIColor) -> SCNMaterial { let material = SCNMaterial() print("Applying material with color: \(color)") material.diffuse.contents = color.withAlphaComponent(1.0) material.specular.contents = UIColor.white material.shininess = 100 material.lightingModel = .phong
return material }
private func configureLights() { // Ambient light for base illumination let ambientLight = SCNLight() ambientLight.type = .ambient ambientLight.intensity = 500 let ambientLightNode = SCNNode() ambientLightNode.light = ambientLight rootNode.addChildNode(ambientLightNode)
// Array of positions and directions for the 6 lights let positions: [(SCNVector3, SCNVector3)] = [ (SCNVector3(0, 10, 0), SCNVector3(0, -1, 0)), // Top (SCNVector3(0, -10, 0), SCNVector3(0, 1, 0)), // Bottom (SCNVector3(10, 0, 0), SCNVector3(-1, 0, 0)), // Right (SCNVector3(-10, 0, 0), SCNVector3(1, 0, 0)), // Left (SCNVector3(0, 0, 10), SCNVector3(0, 0, -1)), // Front (SCNVector3(0, 0, -10), SCNVector3(0, 0, 1)) // Back ]
for (position, direction) in positions { let light = SCNLight() light.type = .directional light.intensity = 1000 light.color = UIColor.white let lightNode = SCNNode() lightNode.light = light lightNode.position = position lightNode.eulerAngles = SCNVector3( atan2(direction.y, direction.z), atan2(direction.x, direction.z), 0 ) // Orient toward the center rootNode.addChildNode(lightNode) } }
required init(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } < /code> changekitview: < /p> import SwiftUI import SceneKit
struct SceneKitView: UIViewRepresentable { func makeUIView(context: Context) -> SCNView { let view = SCNView() view.scene = CuboScene() // Use the created scene view.allowsCameraControl = true // Allow camera movement with touch view.autoenablesDefaultLighting = false // Disable default lighting view.backgroundColor = .clear
// Configure an initial camera let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 5, y: 5, z: 5) // Diagonal position to see all faces cameraNode.look(at: SCNVector3(0, 0, 0)) // Point to the cubes center view.pointOfView = cameraNode
Мне поручено с проблемой найти цвета на лицевой стороне куба Рубика без стикеров с использованием opencv, но я не могу понять, каким образом может быть лучший способ сделать это. alt = Склеочный куб Рубика src =
Однако, это терпит неудачу, когда он...
Я учусь и работаю над школьным проектом, связанным с обработкой изображений, и мне очень нужна помощь. Я новичок в программировании, особенно с Python и OpenCV, и пытаюсь выполнить конкретную задачу.
Я хочу написать программу, которая помещает...
Я учусь и работаю над школьным проектом, связанным с обработкой изображений, и мне очень нужна помощь. Я новичок в программировании, особенно с Python и OpenCV, и пытаюсь выполнить конкретную задачу.
Я хочу написать программу, которая помещает...