Vous n'êtes pas identifié.
Hello tout le monde,
Je m'arrache les cheveux depuis quelques jours, je réclame donc votre aide !
J'aimerai réaliser le même comportement qu'Around Me - cad l'affichage de la réalité augmentée lorsque l'on pivote l'appareil en mode landscape.
J'ai initialement un UITabBarController, avec un rootViewController dans laquelle je gère le comportement shouldAutorotateToInterfaceOrientation.
J'utilise la librairie ARKit.
J'ai essayé plusieurs choses :
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
FriendLocator3AppDelegate *appDelegate = (FriendLocator3AppDelegate *)[[UIApplication sharedApplication] delegate];
if ([ARKit deviceSupportsAR]) {
if (appDelegate.uTabBarController.selectedIndex == 0) {
if ((interfaceOrientation == UIDeviceOrientationLandscapeLeft)) {
arViewController = [[ARViewController alloc] initWithDelegate:self];
[appDelegate.uTabBarController.view setHidden:YES];
[appDelegate.window addSubview:arViewController.view];
[appDelegate.window bringSubviewToFront:arViewController.view];
[appDelegate.uTabBarController.moreNavigationController pushViewController:arViewController animated:YES];
[arViewController release];
return YES;//(interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
} else {
[appDelegate.uTabBarController.view setHidden:NO];
[appDelegate.window bringSubviewToFront:appDelegate.uTabBarController.view];
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
} else {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
} else {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
}Dans ce cas, ça ne fonctionne pas du tout 
J'ai essayé :
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
FriendLocator3AppDelegate *appDelegate = (FriendLocator3AppDelegate *)[[UIApplication sharedApplication] delegate];
if ([ARKit deviceSupportsAR]) {
if (appDelegate.uTabBarController.selectedIndex == 0) {
if ((interfaceOrientation == UIDeviceOrientationLandscapeLeft)) {
ARViewController *viewController = [[ARViewController alloc] initWithDelegate:self];
[appDelegate.window addSubview:arViewController.view];
[viewController release];
return YES;//(interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
} else {
[appDelegate.window bringSubviewToFront:appDelegate.uTabBarController.view];
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
} else {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
} else {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
}Dans ce cas ça fonctionne la première fois, mais la deuxième fois (lorsque j'effectue deux fois la rotation de l'appareil - portrait - landscape - portrait - landscape) cela fonctionne mais le deuxième landscape n'affiche pas la camera mais juste l'overlay.
Pour quitter la vue de l'AR (AugmentedRealityController.m), le code est :
[rootViewController dismissModalViewControllerAnimated:NO];
Je ne suis pas sûr de m'expliquer correctement, si vous ne voyez pas le problème je peux essayer d'expliquer un peu mieux ^^
Merci d'avance de votre aide.
Hors ligne
Hello,
Déjà je pense qu'il faut raisonner par étape.
En 1, arriver à détecter le passage landscape à chaque fois, et afficher une simple vue. -
valider cette fonction
En 2, arriver à afficher la RA dans une vue landscape ou verticale -
valider la fonction RA
En 3, fusionner les deux méthodes.
Je pense que tu arrives en partie à faire ce que tu fais. Mon avis est que tu as un soucis de désallocation de la mémoire lorsque tu n'utilises plus la RA. En gros, tu passes en landscape, la RA s'affiche bien. Ensuite tu repasses en portrait, là c'est bon. Mais quand on repasse en landscape une deuxième fois OUPS ça coince.
-
c'est très significatif du fait qu'il y a des release qui manquent à certains endroits lorsque tu passes de landscape à portrait.
*désolé de pas pouvoir passer plus de temps sur ton code pour le moment (si d'autres passent par là n'hésitez pas)*
Hors ligne
Merci de ta réponse. J'arrive à le faire fonctionner mais quand je fait un
[cameraController dismissModalViewControllerAnimated:YES];
La camera disparaît (animation), je vois donc ma vue initiale, puis une vue (écran noir) réapparait de façon animée ...
Je suis en train de creuser, mais si vous avez une idée sur la question, elle sera la bienvenue
Hors ligne
Je déterre ce sujet car j'aimerais savoir si d'autres personnes ont testé la fonction de réalité augmentée dans leur appli.
Je suis en train d'essayer de mettre çà en place, alors j'ai recopié les différentes pages de code que l'on trouve sur ce lien, ce qui m'amène à ce résultat dans mon arborescence :

J'ai ensuite créé une méthode pour basculer en mode AR, au sein du view controller désiré (ici, NavigationViewController) :
-(IBAction)goAugmentedReality:(id)sender {
arViewController = [[ARViewController alloc] initWithDelegate:self];
[self.navigationController pushViewController:arViewController animated:YES];
[arViewController release];
}et j'ai redéfini la méthode
-(NSMutableArray *)getLocations
(qui se trouve dans GEOLocations.h) pour corriger les warnings suivants :
-Incomplete implementation of class 'NavigationViewController'
-Method definition for -getLocations not found
-Class 'NavigationViewController' does not fully implement the 'ARLocationDelegate' protocol
Voici pour la redéfinition :
-(NSMutableArray *)getLocations {
NSMutableArray *locationArray;
ARGeoCoordinate *tempCoordinate;
CLLocation *tempLocation;
tempLocation = [[CLLocation alloc] initWithLatitude:48.856667 longitude:2.350987];
tempCoordinate = [ARGeoCoordinate coordinateWithLocation:tempLocation locationTitle:@"CG03"];
[locationArray addObject:tempCoordinate];
[tempLocation release];
return locationArray;
}Pour l'instant j'obtient un EXC_BAD_ACCESS dont je n'arrive pas à me débarrasser (alors que d'habitude je me sors toujours de ces situations).
Voilà pour mon expérience actuelle de la fonction "Réalité Augmentée".
Si d'autres personne peuvent partager leur expérience je serais très intéressé d'écouter des avis qui m'aideront peut être à avancer 
Cordialement.
Tork
Hors ligne
Copyright © 2009 - ipup.fr • création de Jérémy Lagrue • design de Loann Fraillon • contact