2017-10-17 7 views
0

Je travaille sur l'utilisation du Hololens Lens Toolkit Master. Le problème est que lorsque vous réglez le SetParent de la caméra de l'objectif, la position de la caméra de l'objectif devient la même que la position du parent. Par exemple, si la position de A est 0, 0, 0 et que la position de B est 0, 0, 4, A.SetParent(B.Transform) rendrait la position de A 0, 0, -4.hololens setParente position change caméra objectif

Cela est également vrai dans Unity Editor.

Cependant, si vous construisez sur hololens et exécutez A.SetParent(B.Transform), la position A sera 0, 0, 4.

Je ne sais pas pourquoi cela arrive ...

Je veux 0, 0 , -4 !!

Répondre

0

D'une manière générale le parent de la caméra principale est la scène elle-même, vous ne pouvez pas aller plus haut, de sorte que le parent est l'appareil photo, à moins que votre appareil photo est dans un autre objet de jeu. Rappelez-vous aussi que, avec les Hololens, la caméra est la position stable tout le reste doit se déplacer par rapport à la caméra, et non l'inverse. Mise à jour: Donc, la caméra principale dans les applications hololens est comme la caméra de personnage dans un FPS, mais ce n'est pas la caméra qui bouge le monde et l'application n'est pas en contrôle de la caméra principale, en FPS, vous contrôlez le personnage soit avec un contrôleur, soit avec un clavier. La différence ici est que la caméra principale est contrôlée par les hololens, 0,0,0,0 est le point fixe de la caméra principale et ne change jamais, ce qui se passe est que les caméras de détection dans la hololens position de mise à jour basée sur des routines de cartographie spatiale dans le périphérique, les modifications apportées à la position de la caméra principale auront des résultats inattendus. Si vous voulez changer le point de vue, je vous recommande de créer une nouvelle caméra et de transférer la vue vers la nouvelle caméra et de déplacer cette caméra, et de revenir à la caméra principale lorsque vous voulez la remettre en marche. Cette nouvelle caméra ne peut pas être un enfant de la caméra principale. Une mise en garde est que je n'ai jamais essayé cela, et est offert comme une solution possible, je ne sais pas si cela va fonctionner ou non.

+0

Merci pour votre réponse. Je n'ai pas mis l'appareil photo comme un enfant, j'ai créé un mannequin, mis le mannequin comme un enfant, et le mannequin comme une référence à l'emplacement de la caméra. –

+0

Mais je ne comprends toujours pas. C'est la même logique, mais cela fonctionne très bien sur l'appareil photo Asus Zhenphone AR, mais je ne sais pas ce qui le rend si bien qu'il ne fonctionne pas correctement sur un appareil photo hololens. –

+0

Hololens est un animal complètement différent, en raison du fait que votre vision lors de l'utilisation n'est pas occlus, de sorte que le fonctionnement des caméras est différent. C'est essentiellement la même réponse, la caméra principale est toujours 0,0,0,0 c'est le monde qui bouge, pas la caméra.Quand vous commencez à changer la position de la caméra principale, vous changez la position du point de vue de la personne, ce qui est un point fixe dans l'espace, vous ne voulez pas bouger lorsque vous utilisez les hololens –

0

Il y a deux pour la fonction surcharges SetParent:

SetParent(Transform parent) 

SetParent(Transform parent, bool worldPositionStays); 

La première utilise true pour le paramètre par défaut. Utilisez la deuxième fonction et passez-lui false pour forcer l'objet à utiliser sa position d'emplacement lors de la définition de son parent.

A.SetParent(B.Transform, false); 
+0

Merci pour la réponse. Mais je l'ai fait comme ça, mais le résultat était le même. Il a changé pour la même position que le parent. –

+0

Triste que je n'ai pas hololens et ne peut pas reproduire ce problème. Habituellement, le problème de position après avoir appelé la fonction SetParent est résolu en fournissant le second paramètre. Modifier votre question avec une capture d'écran de la valeur de la caméra qui est en constante évolution peut-être quelqu'un peut comprendre le problème. – Programmer