מרחב השמות של הפנורמה שמתואר כאן מכיל מאפיינים שמספקים מידע בנוגע ליצירה ולרינדור של תמונות פוטוספריות, שלפעמים מכונות גם תמונות פנורמה, כמו התמונות שנוצרות על ידי התכונה פנורמית ב-360° במצלמת Android 4.2. המטא-נתונים צריכים להיות מסודרים בהמשכים ולהטמיע אותם ב-photo sphere, כפי שמתואר בתקן Adobe XMP (ראו references בסוף הדף הזה).
ה-URI של מרחב השמות הוא http://ns.google.com/photos/1.0/panorama/
מאפייני מטא-נתונים
בתרשימים ובטבלה שבהמשך מוצגים המאפיינים של ה-photo sphere שמוקפים על ידי הפרמטרים של GPano. בעת עריכה והצגה של תמונות פנורמיות ב-360°, חשוב לאמת ולעדכן את המטא נתונים בהתאם, כפי שמתואר בהמשך מסמך זה. כשמציינים את שדות התנוחה והכותרת הראשונית, חשוב לפעול בהתאם למוסכמות של אוילר זווית שמפורטות בהמשך המסמך.
שימו לב שמוצרי Google תומכים רק בתחזיות כדוריות. תחזיות נוספות נתמכות כרגע רק על ידי גורמים אחרים.
תחזיות כדוריות
היטלים גליליים
שימו לב שאם החלק העליון של תמונה גלילית נמצא מעל האופק, ערכי CroppedAreaTopPixels חייבים להיות שליליים. הערך 0 עבור CroppedAreaTopPixels ימקם את החלק העליון של התמונה באופק. ערך חיובי של CroppedAreaTopPixels ממקם את החלק העליון של התמונה מתחת לאופק.
הפניה לפרמטר GPano
שם | תיאור | נדרש | ערך ברירת המחדל (הצופה הניח) |
תיאור הנכס | נדרשת פעולה אם התמונה שונתה |
---|---|---|---|---|---|
GPano:UsePanoramaViewer | בוליאני | לא | נכון | האם להציג את התמונה הזו במציג של תמונה פנורמית ב-360° ולא כתמונה רגילה רגילה. ניתן להגדיר זאת בהתאם להעדפות המשתמש או על ידי התוכנה ליצירת רצף תמונות. האפליקציה שמציגה או מטמיעה את התמונה עשויה להתעלם מכך. | קנה מידה/חיתוך: ללא שינוי. אפליקציה יכולה להחליט לשנות את ההגדרה הזו ל-False אם שדה הראייה נמוך מערך מסוים. |
GPano:CaptureSoftware | מחרוזת | לא | לא רלוונטי | אם הצילום בוצע באמצעות אפליקציה במכשיר נייד, כמו טלפון Android, שם האפליקציה שבה נעשה שימוש (למשל, תמונה פנורמית ב-360°). יש להשאיר את השדה ריק אם תמונות המקור צולמו באופן ידני, למשל באמצעות DSLR על חצובה. | לא רלוונטי |
GPano:StitchingSoftware | מחרוזת | לא | לא רלוונטי | התוכנה ששימשה ליצירת התמונה הפוטוספרית הסופית. לפעמים הערך הזה יכול להיות זהה לערך שב-GPano:CaptureSoftware. | לא רלוונטי |
GPano:ProjectionType | פתיחה של בחירת הטקסט | כן |
מלבן |
סוג ההיטל שנעשה בו שימוש בקובץ התמונה. מוצרי Google תומכים בשלב זה בערך equirectangular בלבד. | קנה מידה/חיתוך: ללא שינוי. |
GPano:PoseHeadingDegrees | ריאליסטי | לא, אבל נדרש כדי להציג אותו במפות Google | לא רלוונטי | כותרת המצפן, נמדדת במעלות בכיוון השעון מצפון, למרכז התמונה. הערך חייב להיות גדול מ-0 וקטן מ-360. | קנה מידה/חיתוך: ללא שינוי. |
GPano:PosePitchDegrees | ריאליסטי | לא | 0 | גובה הצליל, שנמדד במעלות מעל האופק, למרכז התמונה. הערך חייב להיות גדול מ-90- ו-<= 90. | קנה מידה/חיתוך: ללא שינוי. |
GPano:PoseRollDegrees | ריאליסטי | לא | 0 | גליל, שנמדד במעלות, של התמונה כאשר הרמה עם האופק היא 0. עם הגדלה של הסיבוב, האופק בתמונה מסתובב נגד כיוון השעון. הערך חייב להיות גדול מ-180 ו-<= 180. | קנה מידה/חיתוך: ללא שינוי. |
GPano:InitialViewHeadingDegrees | מספר שלם | לא | 0 | זווית הכיוון של התצוגה הראשונית במעלות מצפון בעולם האמיתי, לא ביחס למרכז התמונה הפנורמית. | קנה מידה/חיתוך: ללא שינוי. |
GPano:InitialViewPitchDegrees | מספר שלם | לא | 0 | זווית הגובה של התצוגה הראשונית במעלות מעל האופק בעולם האמיתי, לא ביחס למרכז התמונה הפנורמית. | קנה מידה/חיתוך: ללא שינוי. |
GPano:InitialViewRollDegrees | מספר שלם | לא | 0 | זווית הגלגול של התצוגה הראשונית במעלות, כאשר הרמה מול האופק בעולם האמיתי היא 0. עם הגדלה של הסיבוב, האופק מסתובב נגד כיוון השעון בתצוגה. | קנה מידה/חיתוך: ללא שינוי. |
GPano:InitialHorizontalFOVDegrees | ריאליסטי | לא | לא רלוונטי | שדה הראייה האופקי ההתחלתי שעל הצופה להציג (במעלות). פעולה זו דומה לרמת הזום. | לא רלוונטי |
GPano:InitialVerticalFOVDegrees | ריאליסטי | לא | לא רלוונטי | שדה הראייה האנכי הראשוני שהצופה צריך להציג (במעלות). פעולה זו דומה לרמת הזום. אם יש שתי גרסאות: GPano:InitialHorizontalFOVDegrees ו-GPano:InitialVerticalFOVDegrees, ל-GPano:InitialHorizontalFOVDegrees. השתמשו רק ב-InitialFOVDegrees אם התוכן שלכם יוצג במספר יחסי גובה-רוחב, ואתם מעדיפים ששדה הראייה האנכי יישאר קבוע, כל עוד שדה הראייה האופקי עשוי להשתנות. בשלב זה, מוצרי Google לא תומכים בשדה הזה. | לא רלוונטי |
GPano:FirstPhotoDate | תאריך | לא | לא רלוונטי | התאריך והשעה של התמונה הראשונה שנוצרה ב-photo sphere. | קנה מידה/חיתוך: ללא שינוי. |
GPano:LastPhotoDate | תאריך | לא | לא רלוונטי | התאריך והשעה של התמונה האחרונה שנוצרה ב-photo sphere. | קנה מידה/חיתוך: ללא שינוי. |
GPano:SourcePhotosCount | מספר שלם | לא | לא רלוונטי | מספר תמונות המקור ששימשו ליצירת הצילום הפנורמי. | קנה מידה/חיתוך: ללא שינוי. |
GPano:ExposureLockUsed | בוליאני | לא | לא רלוונטי | כאשר צולמו תמונות מקור נפרדות, גם אם הגדרת החשיפה של המצלמה נעולה וגם אם לא. | לא רלוונטי |
GPano:CroppedAreaImageWidthPixels | מספר שלם | כן | לא רלוונטי | הרוחב המקורי בפיקסלים של התמונה (שווה לרוחב התמונה בפועל במקרה של תמונות לא ערוכות). ראו את התרשימים למעלה. | קנה מידה/חיתוך: יש לעדכן מאפיין זה כך שישקף את הגודל החדש של התמונה. |
GPano:CroppedAreaImageHeightPixels | מספר שלם | כן | לא רלוונטי | הגובה המקורי בפיקסלים של התמונה (שווה לגובה התמונה בפועל במקרה של תמונות לא ערוכות). ראו את התרשימים למעלה. | קנה מידה/חיתוך: יש לעדכן מאפיין זה כך שישקף את הגודל החדש של התמונה. |
GPano:FullPanoWidthPixels | מספר שלם | כן | לא רלוונטי | הרוחב המלא המקורי שממנו נחתכה התמונה. אם תועדו צילום פנורמי חלקי בלבד, הערך מציין את הרוחב של התמונה הפוטוספרית המלאה. ראו את התרשימים למעלה. | חיתוך: ללא שינוי. קנה מידה: יש לשנות את קנה המידה כראוי בהתאם. |
GPano:FullPanoHeightPixels | מספר שלם | כן | לא רלוונטי | הגובה המלא המקורי שממנו נחתכה התמונה. אם צילמתם רק צילום פנורמי חלקי, הערך הזה מציין את הגובה של התמונה הפוטוספרית המלאה. ראו את התרשימים למעלה. | חיתוך: ללא שינוי. קנה מידה: יש לשנות את קנה המידה כראוי בהתאם. |
GPano:CroppedAreaLeftPixels | מספר שלם | כן | לא רלוונטי | עמודה שבה הקצה השמאלי של התמונה נחתך מתמונת ה-photo sphere בגודל המלא. ראו את התרשימים למעלה. | חיתוך: אם החיתוך הימני של התמונה משתנה, יש לעדכן את הערך הזה. קנה מידה: יש לשנות את גודל התמונה כראוי. |
GPano:CroppedAreaTopPixels | מספר שלם | כן | לא רלוונטי | השורה שבה נחתכו הקצה העליון של התמונה מתמונת ה-photo sphere בגודל המלא. ראו את התרשימים למעלה. | חיתוך: אם החיתוך העליון של התמונה השתנה, יש לעדכן את הערך הזה. קנה מידה: יש לשנות את גודל התמונה כראוי. |
GPano:InitialCameraDolly | ריאליסטי | לא | 0 | הפרמטר האופציונלי הזה מזיז את המצלמה הווירטואלית לאורך קו הראייה, הרחק ממרכז התמונה הפוטוספרית. מיקום של משטח אחורי מיוצג על ידי הערך -1.0, והמיקום של המשטח הקדמי מיוצג על ידי 1.0. בתצוגה רגילה, יש להגדיר את הפרמטר הזה ל-0. | לא רלוונטי |
דוגמה של תמונה פנורמית ב-360°
מי שלא מתכנת יכול להוסיף את הדוגמה הבאה למטא-נתונים של תמונות ה-Photo פנורמיות המלאות הקיימות (360 מעלות x 180 מעלות) עם שינויים קטנים בלבד. ניתן לעשות זאת במוצרים לעריכת תמונות, כגון Adobe Photoshop.
- משנים את כל המופעים של 4000 ו-2000 כך שיתאימו לרוחב ולגובה התואמים של התמונה, בפיקסלים
- צריך לעדכן את Pose מיקודDegrees כדי לאפשר הצגת ה-Photo פנורמי במפות Google. אחרת, יש לך אפשרות להסיר את הפרמטר הזה
- עדכון או הסרה של פרמטרים אופציונליים (כמפורט למעלה)
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/"> <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer> <GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware> <GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware> <GPano:ProjectionType>equirectangular</GPano:ProjectionType> <GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees> <GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees> <GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees> <GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees> <GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees> <GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels> <GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels> <GPano:CroppedAreaImageWidthPixels>4000</GPano:CroppedAreaImageWidthPixels> <GPano:CroppedAreaImageHeightPixels>2000</GPano:CroppedAreaImageHeightPixels> <GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels> <GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels> <GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate> <GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate> <GPano:SourcePhotosCount>50</GPano:SourcePhotosCount> <GPano:ExposureLockUsed>False</GPano:ExposureLockUsed> </rdf:Description>
דוגמה של תמונה פנורמית ב-360°
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/"> <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer> <GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware> <GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware> <GPano:ProjectionType>equirectangular</GPano:ProjectionType> <GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees> <GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees> <GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees> <GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees> <GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees> <GPano:CroppedAreaLeftPixels>90</GPano:CroppedAreaLeftPixels> <GPano:CroppedAreaTopPixels>128</GPano:CroppedAreaTopPixels> <GPano:CroppedAreaImageWidthPixels>2300</GPano:CroppedAreaImageWidthPixels> <GPano:CroppedAreaImageHeightPixels>1042</GPano:CroppedAreaImageHeightPixels> <GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels> <GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels> <GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate> <GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate> <GPano:SourcePhotosCount>50</GPano:SourcePhotosCount> <GPano:ExposureLockUsed>False</GPano:ExposureLockUsed> </rdf:Description>
עמידות בעריכת תמונות
כדי להיות עמידים, תוכניות שמציגות תמונות פנורמיות במציג צריכות לבדוק אם אפליקציה מסוימת הותאמה לגודלה של התמונה הפוטוספרית המקורית מבלי לעדכן את המטא-נתונים. ניתן לעשות זאת באופן הבא:
- לוודא שהתג CroppedAreaImageWidthPixels שווה לרוחב התמונה בפועל
- מוודאים שהתג CroppedAreaImageHeightPixels שווה לגובה התמונה בפועל
- אם שלב 1 או 2 נכשל, בודקים אם יחס הגובה-רוחב של התמונה נשמר
- אם שלב 3 נכשל, אל תציג את התמונה כ-photo sphere מכיוון שהיא שונתה באופן לא תואם באופן שיגרום לעיוותים שגויים
- אם שלב 3 עובר, יחס הגובה-רוחב שווה ערך, ויש להתאים את כל ערכי התגים הבאים בהתאם לגודל התמונה החדש:
CroppedAreaImageWidthPixels , CroppedAreaImageHeights , FullPanoWidthPixels , FullPanoHeightPixels , CroppedAreaLeftPixels , CroppedAreaRightPixels.
סקירה כללית על זוויות אוילר
הכיוון של התמונה הפוטוספרית בפריים העולמי מוגדר על ידי זוויות אוילר. ניתן להגדיר זוויות אוילר בדרכים רבות. כדי לתקן את הטעות, תוכנית חייבת לפעול בקפדנות לפי מוסכמות זווית אוילר שמתוארות כאן.
המיקום מעל לפני השטח של כדור הארץ מגדיר מסגרת מקומית קבועה XYZ, כאשר Z היא למעלה ואורתוגונלית לפני השטח של כדור הארץ, X הוא החלק המזרחי האמיתי ו-Y הוא צפון מוחלט. הכיוון מוגדר ביחס ל'מסגרת המקומית' הקבועה, וזוויות אוילר הן סיבובים סביב צירי ה-XYZ הקבועים. לכן, כיוון התנוחה אינו מוגדר בקטבים. כלומר, כיוון של צילום פנורמי עם זוויות (0, 0, 0) הפיקסל המרכזי יפנה לכיוון צפון, עם קו המשווה של הצילום הפנורמי המקביל לפני השטח של כדור הארץ.
הזוויות של אוילר מספק מיפוי מנקודות ב'מסגרת הפוטוספרית' (המסובבת) לנקודות ב'מסגרת המקומית' (הקבועה):
מטריצת סיבוב נבנתה מזוויות אוילר באופן הבא (חשוב לשמר את הסדר הזה):
R = R_Z(-heading) * R_X(pitch) * R_Y(roll)
כאשר: R_*(t) הוא סיבוב יד ימין מסביב לציר בעל השם:
R_Z(angle) = [ cos(angle), -sin(angle)
כאשר: Z = למעלה, X = מזרח, Y = צפון.
חשוב לשמר את הסדר הבא:
R = R_Z(-heading) * R_X(pitch) * R_Y(roll)
כי סיבובים הם לא פעולות קומוטטיביות.
שים לב שזווית הכותרת זהה לכותרת רגילה של מצפן.
קובצי עזר
Adobe XMP רגיל: http://www.adobe.com/devnet/xmp.html