当我浏览会话805的视频,创建出色的AR体验时,他们提到在AR中显示文本时使用屏幕空间文本.他们使用他们的Measure应用程序的例子非常有效.
我想实现类似的功能.但是,我无法弄明白.
我正在尝试使用 合并两个图像VNImageHomographicAlignmentObservation,我目前得到一个 3d 矩阵,如下所示:
simd_float3x3([ [0.99229, -0.00451023, -4.32607e-07)],
[0.00431724,0.993118, 2.38839e-07)],
[-72.2425, -67.9966, 0.999288)]], )
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用这些值合并成一张图像。似乎没有任何关于这些值甚至意味着什么的文档。我在这里找到了一些关于变换矩阵的信息:使用矩阵。
但到目前为止没有其他任何帮助我......有什么建议吗?
我的代码:
func setup() {
let floatingImage = UIImage(named:"DJI_0333")!
let referenceImage = UIImage(named: "DJI_0327")!
let request = VNHomographicImageRegistrationRequest(targetedCGImage: floatingImage.cgImage!, options: [:])
let handler = VNSequenceRequestHandler()
try! handler.perform([request], on: referenceImage.cgImage!)
if let results = request.results as? [VNImageHomographicAlignmentObservation] {
print("Perspective warp found: \(results.count)")
results.forEach { observation in
// A matrix with 3 rows and 3 columns.
let matrix = observation.warpTransform
print(matrix) }
} …Run Code Online (Sandbox Code Playgroud) 我使用 Reality Composer 创建了一个非常简单的场景(“SpeechScene”),其中一个语音标注对象(“Speech Bubble”)锚定在一个Face锚点上。
我已通过以下方式将此场景加载到代码中:
let speechAnchor = try! Experience.loadSpeechScene()
arView.scene.anchors.append(speechAnchor)
let bubble = (arView.scene as? Experience.SpeechScene)?.speechBubble
Run Code Online (Sandbox Code Playgroud)
它按预期呈现。但是,我想动态更改此现有实体的文本。
我在这里发现了一个类似的问题,但我不清楚如何引用meshResourcevanillaRealityKit.Entity对象的属性。
这可能吗?谢谢!
在 SceneKit 中,有很多选项,例如
SCNMaterial.(diffuse|emission|ambient|...).contents SCNMaterial.transparency(从 0.0 到 1.0 的 CGFloat) SCNMaterial.transparent(另一个 SCNMaterialProperty) SCNNode.opacity(从 0.0(完全透明)到 1.0(完全不透明)的 CGFloat)我想知道是否有办法在 RealityKit 中为 ModelEntity 设置透明度/不透明度/alpha?
我正在尝试围绕其 z 轴旋转一个立方体,但我找不到方法。
RealityKit 有没有办法做到这一点?
我正在尝试在 RealityKit AR 场景中添加照明。我在 Reality Composer 中找不到灯光选项。如果有办法添加Directional Light或编辑它,请告诉我。我尝试过 Apple 文档,但不明白如何添加它们。
我希望能够将在 Reality Composer 中创建的文件添加到 Swift Playground 中以进行测试。我也认为用作剧本的补充会很有趣。如何将 rcproject 添加到 Playground 中,例如 Apple 提供的场景“Box”的 Experience.rcproject?
RealityKit框架中检测交叉点的方法一共有三种,但是我不知道如何在我的项目中使用它。
1.
func raycast(origin: SIMD3<Float>,
direction: SIMD3<Float>,
length: Float,
query: CollisionCastQueryType,
mask: CollisionGroup,
relativeTo: Entity?) -> [CollisionCastHit]
Run Code Online (Sandbox Code Playgroud)
2.
func raycast(from: SIMD3<Float>,
to: SIMD3<Float>,
query: CollisionCastQueryType,
mask: CollisionGroup,
relativeTo: Entity?) -> [CollisionCastHit]
Run Code Online (Sandbox Code Playgroud)
3.
func convexCast(convexShape: ShapeResource,
fromPosition: SIMD3<Float>,
fromOrientation: simd_quatf,
toPosition: SIMD3<Float>,
toOrientation: simd_quatf,
query: CollisionCastQueryType,
mask: CollisionGroup,
relativeTo: Entity?) -> [CollisionCastHit]
Run Code Online (Sandbox Code Playgroud) 我正在使用 Vision 框架,我希望能够使用 UITextField 来查找图片中的特定单词。例如,假设我在文本字段中输入“黑色”一词,我希望它在我的图片中检测到该词。我该怎么做呢?我使用 Vision 框架,我找到了如何检测文本,但停留在可以检测用户在文本字段中输入的单词的部分。
func startTextDetection() {
let textRequest = VNDetectTextRectanglesRequest(completionHandler: self.detectTextHandler)
let request = VNRecognizeTextRequest(completionHandler: self.detectTextHandler)
request.recognitionLevel = .fast
textRequest.reportCharacterBoxes = true
self.requests = [textRequest]
}
func detectTextHandler(request: VNRequest, error: Error?) {
guard let observations = request.results else {
print("no result")
return
}
let result = observations.map({$0 as? VNTextObservation})
DispatchQueue.main.async() {
self.previewView.layer.sublayers?.removeSubrange(1...)
for region in result {
guard let rg = region else {
continue
}
self.highlightWord(box: rg)
if let boxes = region?.characterBoxes {
for characterBox …Run Code Online (Sandbox Code Playgroud) 如果您打开 Xcode,创建一个新的增强现实项目并运行该项目,您将更好地理解这个问题。
项目开始在设备上运行后,您将看到来自后置摄像头的图像,拍摄您的房间。
3 或 4 秒后,会出现一个立方体。
我的问题是:
在立方体出现之前应用程序在做什么?我的意思是,我想该应用程序正在寻找场景中的跟踪点,因此它可以锚定立方体,对吗?
如果这是真的,应用程序要寻找哪些元素?
假设我对立方体出现的点不满意。是否有任何功能可以通过点击屏幕触发,以便跟踪可以在我在屏幕上点击的位置附近再次搜索新点?
我知道我的问题很笼统,所以请给我正确的方向。
swift ×9
arkit ×7
realitykit ×7
apple-vision ×2
ios ×2
arcamera ×1
matrix ×1
ocr ×1
raycasting ×1
rotation ×1
wwdc ×1