{"id":33959,"date":"2025-05-28T22:17:46","date_gmt":"2025-05-28T13:17:46","guid":{"rendered":"https:\/\/www.sciement.com\/tech-blog\/?p=33959"},"modified":"2025-05-29T07:10:44","modified_gmt":"2025-05-28T22:10:44","slug":"ue5fov","status":"publish","type":"post","link":"https:\/\/www.sciement.com\/tech-blog\/unreal-engine-5\/ue5fov\/","title":{"rendered":"[UE5][C++]Unreal Engine\u30ab\u30e1\u30e9\u306eFOV\u306fFOV\u3067\u306f\u306a\u3044"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/www.sciement.com\/tech-blog\/wp-content\/uploads\/2025\/05\/FOV_Change.gif\" alt=\"\"\/><\/figure><\/div>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Unreal Engine 5.3\u304b\u3089\u3001\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u30b5\u30a4\u30ba\u3092\u52d5\u7684\u306b\u52d5\u304b\u3057\u305f\u3068\u304d\u306b\u56fa\u5b9a\u3055\u308c\u308b\u30ab\u30e1\u30e9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306eFOV\u304c\u6c34\u5e73FOV\uff08X FOV\uff09\u304b\u3089\u5782\u76f4FOV\uff08Y FOV\uff09\u306b\u5909\u66f4\u306b\u306a\u308a\u307e\u3057\u305f\u3002<a href=\"https:\/\/dev.epicgames.com\/documentation\/en-us\/unreal-engine\/unreal-engine-5.3-release-notes?application_version=5.3\">\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8<\/a>\u306b\u3082<\/p>\n\n\n\n<p><strong>Changed the default aspect ratio constraint to maintain Y FOV since camera FOV is now always handled as horizontal FOV. If preserving the exact framing for a given window size is important, you can specify the old setting value (maintain X FOV) in DefaultEngine.ini.<\/strong><\/p>\n\n\n\n<p>\u3068\u66f8\u304b\u308c\u3066\u3044\u307e\u3059\u3002\u30b3\u30fc\u30c9\u4e0a\u3067\u306fEAspectRatioAxisConstraint::AspectRatio_Maintain<strong>X<\/strong>FOV\u304cEAspectRatioAxisConstraint::AspectRatio_Maintain<strong>Y<\/strong>FOV\u306b\u5909\u66f4\u306b\u306a\u308a\u307e\u3057\u305f\u3002<br>\u304c\u3001\u5c11\u306a\u304f\u3068\u3082\u79c1\u306f\u3053\u306e\u8aac\u660e\u306e\u610f\u5473\u304c\u5168\u304f\u5206\u304b\u3089\u306a\u304b\u3063\u305f\u306e\u3067\u3059\u304c\u3001\u79c1\u3060\u3051\uff1f\uff1f\u3067\u3057\u3087\u3046\u304b\uff1f\uff1f\uff1f<\/p>\n\n\n\n<p>\u4e0a\u306e\u52d5\u753b\u3067\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u30b5\u30a4\u30ba\u306e\u6a2a\u5e45\u304c\u5909\u5316\u3057\u305f\u3068\u304d\u306b3DCG\u306e\u5927\u304d\u3055\u306f\u5909\u308f\u3089\u305a\u306b\u4e21\u6a2a\u304c\u30c8\u30ea\u30df\u30f3\u30b0\u3055\u308c\u308b\u304b\u3001\u6216\u3044\u306f\u3044\u307e\u307e\u3067\u898b\u3048\u3066\u3044\u306a\u304b\u3063\u305f\u5de6\u53f3\u5206\u304c\u8ffd\u52a0\u3067\u63cf\u753b\u3055\u308c\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u78ba\u304b\u306b\u5782\u76f4FOV\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u304c\u3001\u3060\u3068\u3059\u308b\u3068<br><strong>camera FOV is now always handled as horizontal FOV.<\/strong><br>\u306e\u610f\u5473\u304c\u5168\u304f\u5206\u304b\u308a\u307e\u305b\u3093\u3002\u5782\u76f4FOV\u304c\u56fa\u5b9a\u3068\u3044\u3046\u3053\u3068\u306f\u6c34\u5e73FOV\u304c\u52d5\u7684\u306b\u5909\u5316\u3059\u308b\u306e\u3067\u3059\u304c\u3001\u306b\u3082\u304b\u304b\u308f\u3089\u305a\u30ab\u30e1\u30e9FOV\u3068\u3057\u3066\u306f\u6c34\u5e73FOV\u3092\u6307\u5b9a\u3059\u308b\u3068\u3044\u3046\u306e\u306f\u3069\u3046\u3044\u3046\u3053\u3068\u306a\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n\n\n\n<p>APlayerCameraManager (PlayerCameraManager.h)\u30af\u30e9\u30b9\u5185\u3067\u306fFOV\u306f\u4e0b\u8a18\u3067\u6307\u5b9a\u3057\u307e\u3059\u304c\u3001<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"PlayerCameraManager.h\" data-enlighter-group=\"\">\/** FOV to use by default. *\/\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=PlayerCameraManager)\nfloat DefaultFOV;<\/pre>\n\n\n\n<p>\u3053\u306e\u60c5\u5831\u306fFMinimalViewInfo\u69cb\u9020\u4f53\uff08CameraTypes.h\uff09\u306e\u5909\u6570FOV\u306b\u6e21\u3055\u308c\u307e\u3059\u3002<br>\u2026\u304c\u3001\u305d\u306e\u4e2d\u8eab\u3092\u898b\u3066\u307f\u308b\u3068\u2026<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/** The horizontal field of view (in degrees) in perspective mode (ignored in orthographic mode). *\/\nUPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)\nfloat FOV;<\/pre>\n\n\n\n<p>\u3068\u66f8\u304b\u308c\u3066\u304a\u308a\u3001\u3069\u3046\u3084\u3089\u5e38\u306b\u6c34\u5e73FOV\u3068\u3057\u3066\u6271\u308f\u308c\u308b\u305d\u3046\u3067\u3059\u3002\u3088\u304f\u308f\u304b\u308a\u307e\u305b\u3093\u3002<br>\u3055\u3089\u306b\u30b3\u30fc\u30c9\u3092\u8ffd\u3063\u3066\u3044\u304f\u3068\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30b7\u30e7\u30f3\u5909\u63db\u884c\u5217\u304c\u4f5c\u3089\u308c\u308b\u90e8\u5206\u3067\u975e\u5e38\u306b\u8b0e\u306a\u4ed5\u69d8\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u306fFMinimalViewInfo::CalculateProjectionMatrixGivenViewRectangle (CameraStackTypes.cpp)\u95a2\u6570\u306a\u306e\u3067\u3059\u304c\u3001\u91cd\u8981\u306a\u3068\u3053\u308d\u3060\u3051\u629c\u7c8b\u3059\u308b\u3068\u4e0b\u8a18\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ If x is bigger, and we're respecting x or major axis, AND mobile isn't forcing us to be Y axis aligned\nconst bool bMaintainXFOV = \n  ((SizeX > SizeY) &amp;&amp; (AspectRatioAxisConstraint == AspectRatio_MajorAxisFOV)) ||\n  (AspectRatioAxisConstraint == AspectRatio_MaintainXFOV);\nif (bMaintainXFOV)\n{\n  \/\/ If the viewport is wider than it is tall\n  XAxisMultiplier = 1.0f;\n  YAxisMultiplier = SizeX \/ (float)SizeY;\n}\nelse\n{\n  \/\/ If the viewport is taller than it is wide\n  XAxisMultiplier = SizeY \/ (float)SizeX;\n  YAxisMultiplier = 1.0f;\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (!bMaintainXFOV &amp;&amp; ViewInfo.AspectRatio != 0.f &amp;&amp; !CVarUseLegacyMaintainYFOV.GetValueOnGameThread())\n{\n  \/\/ The view-info FOV is horizontal. But if we have a different aspect ratio constraint, we need to\n  \/\/ adjust this FOV value using the aspect ratio it was computed with, so we that we can compute the\n  \/\/ complementary FOV value (with the *effective* aspect ratio) correctly.\n  const float HalfXFOV = FMath::DegreesToRadians(FMath::Max(0.001f, ViewInfo.FOV) \/ 2.f);\n  const float HalfYFOV = FMath::Atan(FMath::Tan(HalfXFOV) \/ ViewInfo.AspectRatio);\n  MatrixHalfFOV = HalfYFOV;\n}<\/pre>\n\n\n\n<p>ViewInfo.FOV\u304c\u30e6\u30fc\u30b6\u304c\u6307\u5b9a\u3057\u305fFOV\u3067\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308c\u3070\u3071\u3063\u3068\u898b\u3067\u306fHalfXFOV\u3082\u56fa\u5b9a\u3055\u308c\u3066\u3044\u3066\u3001HalfYFOV\u304c\u8abf\u6574\u3055\u308c\u3066\u3044\u308b\u2026\u3088\u3046\u306b\u898b\u3048\u307e\u3059\u304c\u3001\u305d\u308c\u3067\u306f\u4e0a\u306e\u52d5\u753b\u306e\u6319\u52d5\u306b\u306a\u308a\u307e\u305b\u3093\u3002\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u306f\u5782\u76f4FOV\u3001\u3064\u307e\u308aHalfYFOV\u306e\u306f\u305a\u3067\u3059\u3002<br>\u5b9f\u306fHalfYFOV\u306e\u3068\u3053\u308d\u3067\u51fa\u3066\u304f\u308bViewInfo.AspectRatio\u306f\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u306e\u73fe\u5728\u306e\u30b5\u30a4\u30ba\u3067\u52d5\u7684\u306b\u6c42\u3081\u3089\u308c\u305f\u6570\u5024\u3067\u306f\u306a\u304f\u3001APlayerCameraManager\u5185\u3067<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DefaultAspectRatio = 1.33333f;<\/pre>\n\n\n\n<p>\u3068\u56fa\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u304cFMinimalViewInfo.AspectRatio\u306b\u6e21\u3055\u308c\u307e\u3059\u3002<strong>HalfXFOV\u3082HalfYFOV\u3082\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308b<\/strong>\u306e\u3067\u3059\uff01\u3057\u304b\u3057\u3053\u306e\u307e\u307e\u3067\u306f\u6c34\u5e73FOV\u3001\u5782\u76f4FOV\u304c\u3069\u3061\u3089\u3082\u56fa\u5b9a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u306a\u308a\u3001\u8868\u793a\u3055\u308c\u308b3DCG\u304c\u4f38\u3073\u7e2e\u307f\u3057\u3066\u3057\u307e\u3044\u305d\u3046\u3067\u3059\u3002<br>\u5b9f\u306f\u3053\u306e\u30b3\u30fc\u30c9\u306e\u5c11\u3057\u5f8c\u3067\u306f\u4e0b\u8a18\u306e\u5b9f\u88c5\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">InOutProjectionData.ProjectionMatrix = FReversedZPerspectiveMatrix(\n  MatrixHalfFOV,\n  MatrixHalfFOV,\n  XAxisMultiplier,\n  YAxisMultiplier,\n  ClippingPlane,\n  ClippingPlane\n);<\/pre>\n\n\n\n<p>\u3055\u3089\u306b\u3053\u306eFReversedZPerspectiveMatrix\u306e\u4e2d\u8eab\u3092\u898b\u308b\u3068\u3001\u884c\u5217\u306e1\u884c1\u5217\u76ee\u304cXAxisMultiplier \/ Tan(MatrixHalfFOV)\u30012\u884c2\u5217\u76ee\u304cYAxisMultiplier \/ Tan(MatrixHalfFOV)\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>AspectRatioAxisConstraint == AspectRatio_MaintainYFOV\u306e\u5834\u5408\u306fXAxisMultiplier = SizeY \/ SizeX, <br>YAxisMultiplier = 1.0f;\u3067SizeX, SizeY\u304c\u5b9f\u969b\u306e\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u306e\u30b5\u30a4\u30ba\u306a\u306e\u3067\u3001\u3064\u307e\u308a<br>\u884c\u5217\u306e1\u884c1\u5217\u76ee\u304c(SizeY \/ SizeX) \/ Tan(MatrixHalfFOV)\u30012\u884c2\u5217\u76ee\u304c1 \/ Tan(MatrixHalfFOV)\u3068\u306a\u308a\u3001\u5782\u76f4FOV\u304c\u56fa\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3053\u3053\u3067\u8a08\u7b97\u3055\u308c\u3066\u3044\u308bMatrixHalfFOV\u306f\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u306e\u5b9f\u969b\u306e\u7e26\u6a2a\u3068\u306f\u95a2\u4fc2\u306e\u306a\u3044ViewInfo.AspectRatio\u3092\u57fa\u306b\u8a08\u7b97\u3055\u308c\u305f\u3082\u306e\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u3064\u307e\u308a<strong>Unreal Engine\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u4ed5\u69d8\u3067\u306f\u3001DefaultFOV\u3092\u6307\u5b9a\u3057\u3066\u3082\u3001\u305d\u306e\u5024\u306f\u6c34\u5e73FOV\u306b\u3082\u5782\u76f4FOV\u306b\u3082\u306a\u308a\u307e\u305b\u3093<\/strong>\u3002<br>\u2026\u3063\u3066\u610f\u5473\u308f\u304b\u3089\u306a\u304f\u306a\u3044\u3067\u3059\u304b\uff1f\uff1f<br>\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u30b5\u30a4\u30ba\u304c\u52d5\u7684\u306b\u5909\u308f\u3063\u3066\u3082FMinimalViewInfo.AspectRatio\u306e\u5024\u304c\u5168\u304f\u95a2\u4fc2\u306a\u3044\u6570\u5024\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3082\u308f\u304b\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u73fe\u72b6\u3001\u76f4\u611f\u7684\u306b\u308f\u304b\u308a\u3084\u3059\u304f\u3059\u308b\u306b\u306f<strong>APlayerCameraManager.DefaultAspectRatio = 1.0f\u306b\u3059\u308b<\/strong>\u3053\u3068\u3067\u3059\u3002\u3053\u3046\u3059\u308c\u3070\u3001<strong>AspectRatioAxisConstraint == AspectRatio_MaintainYFOV\u306e\u5834\u5408\u306b\u5782\u76f4FOV\u304cDefaultFOV\u306b\u4e00\u81f4\u3057\u307e\u3059<\/strong>\u3002DefaultAspectRatio\u306f\u30a8\u30f3\u30b8\u30f3\u306e\u4ed6\u306e\u90e8\u5206\u3067\u3082\u4f7f\u308f\u308c\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3059\u304c\u30011.0f\u306b\u5909\u3048\u308b\u3053\u3068\u3067\u4ed6\u306e\u90e8\u5206\u306b\u5f71\u97ff\u304c\u51fa\u308b\u304b\u3069\u3046\u304b\u307e\u3067\u306f\u691c\u8a3c\u51fa\u6765\u3066\u3044\u307e\u305b\u3093\u3001\u3059\u307f\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u306a\u305c\u3053\u308c\u306b\u6c17\u4ed8\u3044\u305f\u304b\u3068\u3044\u3046\u3068\u3001\u8868\u793a\u3055\u308c\u308b3DCG\u306e\u5927\u304d\u3055\u306b\u5408\u308f\u305b\u3066\u30ab\u30e1\u30e9\u4f4d\u7f6e\u3092\u8abf\u6574\u3059\u308b\u3068\u3044\u3046\u3001\u30b2\u30fc\u30e0\u3067\u306f\u5b9a\u756a\u306e\u3053\u3068\u3092\u3084\u308d\u3046\u3068\u3057\u305f\u3082\u306e\u306e\u3001\u306a\u3093\u304bFOV\u306e\u5024\u304a\u304b\u3057\u304f\u306a\u3044\u304b\uff1f\uff1f\u3068\u601d\u3063\u305f\u304b\u3089\u3067\u3059\u3002<br>\u4ed6\u306b\u3082Unreal Engine\u306a\u3089\u3067\u306f\u306e\u843d\u3068\u3057\u7a74\u304c\u3042\u3063\u305f\u306e\u3067\u3059\u304c\u3001\u3046\u307e\u304f\u3044\u304f\u3068\u4e0b\u56f3\u306e\u3088\u3046\u306b\u3001\u5168\u4f53\u306e3DCG\u306e\u5927\u304d\u3055\u306b\u5408\u308f\u305b\u3066\u81ea\u52d5\u7684\u306b\u826f\u3044\u611f\u3058\u306e\u30ab\u30e1\u30e9\u4f4d\u7f6e\u306b\u306a\u3063\u3066\u304f\u308c\u308b\u306e\u3067\u3057\u305f\u3002<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-stretch is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.sciement.com\/tech-blog\/wp-content\/uploads\/2025\/05\/DICOM_3DCG2s.png\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-stretch is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.sciement.com\/tech-blog\/wp-content\/uploads\/2025\/05\/DICOM_3DCG3s.png\" alt=\"\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unreal Engine 5.3\u304b\u3089\u3001\u30d3\u30e5\u30fc\u30dd\u30fc\u30c8\u30b5\u30a4\u30ba\u3092\u52d5\u7684\u306b\u52d5\u304b\u3057\u305f\u3068\u304d\u306b\u56fa\u5b9a\u3055\u308c\u308b\u30ab\u30e1\u30e9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306eFOV\u304c\u6c34\u5e73FOV\uff08X FOV\uff09\u304b\u3089\u5782\u76f4FOV\uff08Y FOV\uff09\u306b\u5909\u66f4\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u30ea\u30ea\u30fc\u30b9\u30ce\u30fc\u30c8\u306b\u3082 Chang &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-33959","post","type-post","status-publish","format-standard","hentry","category-unreal-engine-5"],"_links":{"self":[{"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/posts\/33959","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/comments?post=33959"}],"version-history":[{"count":25,"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/posts\/33959\/revisions"}],"predecessor-version":[{"id":33989,"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/posts\/33959\/revisions\/33989"}],"wp:attachment":[{"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/media?parent=33959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/categories?post=33959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sciement.com\/tech-blog\/wp-json\/wp\/v2\/tags?post=33959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}