I would like to apply different textures to the front and back faces of a 3D material. Specifically, when applying a texture that cuts the object in half through opacity, I want to be able to observe the back face of the object and apply a different color to it compared to the front face.
In Unity, there is a 'isFrontFace' boolean node that allows for applying different colours to the front and rear faces. However, I am unsure of how to achieve the same effect in Reality Composer Pro!
3D Model is already two-sided.
Discuss spatial computing on Apple platforms and how to design and build an entirely new universe of apps and games for Apple Vision Pro.
Post
Replies
Boosts
Views
Activity
I'm constructing a RealityView where I'd like to display content in front of user's face.
When testing, I found that the deviceAnchor I initially get was wrong, so I implement following code to wait until the deviceAnchor I get from worldTrackingProvider has the correct value:
private let arkitSession = ARKitSession()
private let worldTrackingProvider = WorldTrackingProvider()
var body: some View {
RealityView { content, attachments in
Task {
do {
// init worldTrackingProvider
try await arkitSession.run([worldTrackingProvider])
// wait until deviceAnchor returns correct info
var deviceAnchor : DeviceAnchor?
// continuously get deviceAnchor and check until it's valid
while (deviceAnchor == nil || !checkDeviceAnchorValid(Transform(matrix: deviceAnchor!.originFromAnchorTransform).translation)) {
deviceAnchor = worldTrackingProvider.queryDeviceAnchor(atTimestamp: CACurrentMediaTime())
}
let cameraTransform = Transform(matrix: deviceAnchor!.originFromAnchorTransform)
// ...codes that update my entity's translation
} catch {
print("Error: \(error)")
}
}
}
}
private func checkDeviceAnchorValid(_ translation: SIMD3<Float>) -> Bool {
// codes that check if the `deviceAnchor` has a valid translation.
}
However, I found that sometimes I can't get out from the while loop defined above. Not because my rules inside checkDeviceAnchorValid func are too strict, but because the translation I get from deviceAnchor is always invalid(it is [0,0,0] and never changed)
Why is this happening? Is this a known issue? I wonder if I can get recalled when the worldTrackingProvider returns the correct deviceAnchor,
In the state of .detecting a box is display, does someone know how to get the dimensions of that box? I just want to detect the object create a box around it and get the dimensions.
Scenario: building with old shopfront to be renewed, we have a visual of new concept. Is there an app that can give us the coordinates in line with the plane of the front of the building so we can map the visual on and it alter perspective as you walk around as it ‘sticks’ to front of real building please? Gif attached is visual concept but showing historic pic
I have an app idea that would map an OLD photo onto the front of the same existing building. The underlying work has already been done see https://lowestoftoldandnow.org/full/strolleast#45
but obviously you would have to accurately record 4 points in 3d space but also the user of the app would have to take these points (given to them by the app) and map them back onto the real world with the same accuracy. If the photo was partly on the next door building it would not work.
I am beginning to think that the technology is not there yet :-(
Why high-level RealityKit's APIs are only available on visionOS?
RealityView & Model3D only to name some.
On other platforms currently, the only way to deploy RealityKit & or ARKit, is by using either UIKit or UIKit's integration with SwiftUI (UIViewRepresentable).
Are these newer APIs coming to other platforms as well?
So I have a RealityView with an Entity (from my bundle) being rendered in it like so:
struct ImmersiveView: View {
var body: some View {
RealityView { content in
// Add the initial RealityKit content
if let entity = try? await Entity(named: "MyContent", in: realityKitContentBundle) {
content.add(entity)
}
}
}
}
Is it possible to programatically transform the entity? Specifically I want to (1) translate it horizontally in space, eg 1m to the right, and (2) rotate it 90°. I've been looking through the docs and haven't found the way to do this, but I fear I'm not too comfortable with Apple docs quite yet.
Thanks in advance!
i do not really know how this works but hi I am Philemon.
for a school assignment I need to program a app I have 2 years for this and it is for people that are interested in coding. I want to make a iOS app that can make 3d models from pictures (photogrammetry) and I know that there are already apps for this but I want to code this myself. I have a little bit of experience coding c# in unity but I really don't know where to start can someone help me? and I know that apple has reality kit but I want that people without a LiDAR Scanner can use this too.
so where do I start witch language do I need to learn?
every comment is welcome!!!
kind regards Philemon
My application uses ARKit to capture faces in real time, there are two occasional crashes during use, I can not reproduce it, the following is the crash stack, These are all system API calls. I have no clue, any suggestions to fix it? Thank you so much!
Additional information:
BUG IN CLIENT OF LIBPLATFORM: Trying to recursively lock an os_unfair_lock
the first kind:
EXC_BREAKPOINT 0x00000001f6d2d20c
0 libsystem_platform.dylib _os_unfair_lock_recursive_abort + 36
1 libsystem_platform.dylib _os_unfair_lock_lock_slow + 284
2 SceneKit C3DTransactionGetStack + 160
3 SceneKit _commitImplicitTransaction + 36
4 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 36
5 CoreFoundation __CFRunLoopDoObservers + 548
6 CoreFoundation __CFRunLoopRun + 1028
7 CoreFoundation CFRunLoopRunSpecific + 608
8 Foundation -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
9 Foundation -[NSRunLoop(NSRunLoop) run] + 64
10 UIKitCore __66-[UIViewInProcessAnimationManager
startAdvancingAnimationManager:]_block_invoke_7 + 108
11 Foundation NSThread__start + 732
12 libsystem_pthread.dylib _pthread_start + 136
13 libsystem_pthread.dylib thread_start + 8
the second kind:
已崩溃:com.apple.arkit.ardisplaylink.0x28083bd80
EXC_BREAKPOINT 0x00000001fe43920c
0 libsystem_platform.dylib _os_unfair_lock_recursive_abort + 36
1 libsystem_platform.dylib _os_unfair_lock_lock_slow + 284
2 SceneKit C3DTransactionGetStack + 160
3 SceneKit _commitImplicitTransaction + 36
4 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 36
5 CoreFoundation __CFRunLoopDoObservers + 548
6 CoreFoundation __CFRunLoopRun + 1028
7 CoreFoundation CFRunLoopRunSpecific + 608
8 CoreFoundation CFRunLoopRun + 64
9 ARKitCore -[ARRunLoop _startThread] + 616
10 Foundation NSThread__start + 732
11 libsystem_pthread.dylib _pthread_start + 136
12 libsystem_pthread.dylib thread_start + 8
I want to have realtime image anchor tracking together with RoomPlan.
But it's frustrating to not seeing any thing that can support this.
Because it is useful to have interactive things in the scanned room.
Ideally it should be running the same time, but if not possible, how do you align the two tracking space if running RoomPlan and then ARKit image tracking? sounds like headache
Hello,
I've noticed that when I have my ARSession run the sceneReconstruction provider and the world tracking provider at the same time, I receive no scene reconstruction mesh updates. My catch closure doesn't receive any errors, it just doesn't send anything to the async list.
If I run just the scene reconstruction provider by itself, then I do get mesh updates.
Is this a bug? Is it expected that it's not possible to do this?
Thank you
I am trying to create a simple custom shader with an image as material and a depth map as bump map information. I have followed the official procedure from "Explore materials in Reality Composer Pro" but the depth map is not processed.
What am I doing wrong?
(attached is a screenshot that shows the setup. I removed the image ref for clarity)
I want to set camera exposure to a lower value to attenuate motion blur, how to?
background: I'm making an app to capture video for gaussian splatting. less exposure, less blurry
I'm trying to import the USDZ file of a model with multiple textures attached to each part of the model. When I preview the file by double-clicking on the USDZ, it views fine.
However, when I import it into Reality Composer Pro, it only shows the pink striped model.
I also get the message - "Multiple root level objects exist for HU_EVO_SPY-8.usdc".
There are so many components of the model that binding each texture to each component will be very difficult to do manually.
How can I fix the file such that when I import to Reality Composer Pro, textures are attached to the model?
Hi,
I'm prototyping a visionOS app for which I'm trying to create the following behavior in mixed immersive space:
users pinch and drag to position a model entity in the real world starting from the ray-cast of the pinch, meaning that the initial position should be on a MeshAnchor from scene reconstruction (I got that working, even though it's less precise than I expected)
once the model entity is positioned, I want to anchor this to the world so that it will always stays there no matter what, from what I understand I need to create and add a WorldAnchor to a WorldTrackingProvider for that
after positioning the model entity, users should be able to pinch and drag the entity to change its position and have that be persisted from then onwards
It's not clear to me what the relationship between AnchorEntity(world:) and WorldAnchor is (looks like AnchorEntity(anchor:) isn't available in visionOS). What is the recommended way to keep these together?
Afterwards, what is the recommended way to covert coordinate spaces between repositioned scene coordinate space and the anchor entity hierarchy coordinate space? I tried a DragGesture on the model entity and convert the translation to the scene, that works only when the scene origin hasn't changed. After it has changed, the translation is using the wrong coordinate space.
Thanks for the help!
Geert
When trying to run my app with .windowStyle(.volumetric) for vision OS, this error is returning: Fatal error: Your app was given a scene with session role UISceneSessionRole(_rawValue: UIWindowSceneSessionRoleApplication) but no scenes declared in your App body match this scroll.
Hi, Please forgive me if i am asking a basic question. Because after my R&D I didn't see how can I build a solution where user can scan a QR code hanging on a specific wall at a specific fixed position. So when workers scan qr code from their iOS device they could see all the wirings, pipeline e.t.c. It would be really helpful If someone can let me know if its possible with ARKit and how.
I have an iPad App that works/available on visionOS store.
However, TestFlight releases are displaying that this in
iOS app only, and Incompatible on this Apple Vision Pro.
How do I enable my iPadOS app for TestFlight in vision OS
PS. Native visionOS can appear there,
I don't have any approved or released builds yet for visionOS.
I also see the same issue with "app not compatible" in TestFlight without visionOS section present. The same app is available in App Store in visionOS/iPad apps
Hi,
What are the limitations and capabilities of visionOS? I cannot find answers to the questions I have.
Let's say you have some USDZ files stored in a cloud service, there are so many of them that the app would be huge if you put them in assets. You want to fetch the one you are interested in and show it while an app is running. Is it possible to load USDZ files at runtime from the network?
Is there a limit to how many objects can be visible at once? Let's say I am in an open space, with no walls. I want to place 100 3D objects somewhere in space. Is it possible? What if I placed 500, 1000?
Is there a way to save the anchor point of the object? I want to open the app again and have an object in the same place I left it. I would like to arrange my space and have objects always in the same spots.
How does the OS behave if objects are in different rooms? Is it possible to walk around, visit different rooms, and have objects anchored there? Would it behave like real objects?
Is it possible to color a plane? Let's say there is a wall and it's black. I want this wall to be orange. Is it possible?
How to binding MTLTexture to Color input of the material?
I need use something similar to VideoMaterial.
So I need make a CustomMaterial.
But RealityKit CustomMaterial is not available in VisionOS, and replaced by ShaderGraphMaterial
So how to binding Metal resource such as MTLTexture to ShadeGraphMaterial directly.