From 1a490c07972e3e0ecffe75f16e1fbf2ce806283d Mon Sep 17 00:00:00 2001 From: Will Eastcott Date: Mon, 12 Feb 2024 00:26:07 +0000 Subject: [PATCH] Split Settings into Editor and Scene (#596) * Split Settings into Editor and Scene * Move some images * Move one more image * Fix anchors and links * Add explicit anchors * Update ja translations * Update ja translations * Remove ja copy of deleted page * Update ja translations * Update ja translations * Update ja translations --- .tx/config | 21 +- .../user-manual/assets/types/texture-atlas.md | 2 +- docs/user-manual/editor/assets.md | 2 +- docs/user-manual/editor/editor-api.md | 2 +- docs/user-manual/editor/keyboard-shortcuts.md | 2 +- docs/user-manual/editor/settings.md | 305 ++---------------- docs/user-manual/editor/viewport.md | 6 +- docs/user-manual/faq.md | 4 +- .../graphics/advanced-rendering/batching.md | 2 +- .../graphics/lighting/runtime-lightmaps.md | 6 +- .../publishing/web/playcanvas-hosting.md | 4 +- .../scenes/components/collision.md | 2 +- docs/user-manual/scenes/index.md | 36 +-- docs/user-manual/scenes/loading-scenes.md | 24 +- .../scenes.md => scenes/managing-scenes.md} | 12 +- docs/user-manual/scenes/settings.md | 258 +++++++++++++++ .../user-manual/assets/types/texture-atlas.md | 2 +- .../current/user-manual/editor/assets.md | 2 +- .../current/user-manual/editor/settings.md | 304 ++--------------- .../current/user-manual/editor/viewport.md | 6 +- .../current/user-manual/faq.md | 4 +- .../graphics/advanced-rendering/batching.md | 2 +- .../graphics/lighting/runtime-lightmaps.md | 6 +- .../publishing/web/playcanvas-hosting.md | 4 +- .../scenes/components/collision.md | 2 +- .../current/user-manual/scenes/index.md | 36 +-- .../user-manual/scenes/loading-scenes.md | 14 +- .../scenes.md => scenes/managing-scenes.md} | 12 +- .../current/user-manual/scenes/settings.md | 258 +++++++++++++++ .../editor/settings/editor-settings.png | Bin 0 -> 60687 bytes .../managing-scenes}/scenes-menu.jpg | Bin .../managing-scenes}/scenes-viewport.jpg | Bin .../managing-scenes}/scenes.jpg | Bin .../{editor => scenes}/settings/cog.jpg | Bin .../settings/gamma-correction.jpg | Bin .../settings/lightmapping-settings.png | Bin 36 files changed, 661 insertions(+), 679 deletions(-) rename docs/user-manual/{editor/scenes.md => scenes/managing-scenes.md} (75%) create mode 100644 docs/user-manual/scenes/settings.md rename i18n/ja/docusaurus-plugin-content-docs/current/user-manual/{editor/scenes.md => scenes/managing-scenes.md} (81%) create mode 100644 i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/settings.md create mode 100644 static/images/user-manual/editor/settings/editor-settings.png rename static/images/user-manual/{editor => scenes/managing-scenes}/scenes-menu.jpg (100%) rename static/images/user-manual/{editor => scenes/managing-scenes}/scenes-viewport.jpg (100%) rename static/images/user-manual/{editor => scenes/managing-scenes}/scenes.jpg (100%) rename static/images/user-manual/{editor => scenes}/settings/cog.jpg (100%) rename static/images/user-manual/{editor => scenes}/settings/gamma-correction.jpg (100%) rename static/images/user-manual/{editor => scenes}/settings/lightmapping-settings.png (100%) diff --git a/.tx/config b/.tx/config index c84614be62..771bc816a1 100644 --- a/.tx/config +++ b/.tx/config @@ -1653,13 +1653,6 @@ type = GITHUBMARKDOWN minimum_perc = 0 resource_name = content/en/user-manual/editor/launch-page/loading-screen.md -[o:playcanvas:p:playcanvas-developer-site:r:user-manual-editor-scenes] -file_filter = i18n//docusaurus-plugin-content-docs/current/user-manual/editor/scenes.md -source_file = docs/user-manual/editor/scenes.md -type = GITHUBMARKDOWN -minimum_perc = 0 -resource_name = content/en/user-manual/editor/scenes.md - [o:playcanvas:p:playcanvas-developer-site:r:user-manual-editor-settings] file_filter = i18n//docusaurus-plugin-content-docs/current/user-manual/editor/settings.md source_file = docs/user-manual/editor/settings.md @@ -2374,6 +2367,20 @@ type = GITHUBMARKDOWN minimum_perc = 0 resource_name = content/en/user-manual/scenes/loading-scenes.md +[o:playcanvas:p:playcanvas-developer-site:r:user-manual-scenes-managing-scenes] +file_filter = i18n//docusaurus-plugin-content-docs/current/user-manual/scenes/managing-scenes.md +source_file = docs/user-manual/scenes/managing-scenes.md +type = GITHUBMARKDOWN +minimum_perc = 0 +resource_name = content/en/user-manual/scenes/managing-scenes.md + +[o:playcanvas:p:playcanvas-developer-site:r:user-manual-scenes-settings] +file_filter = i18n//docusaurus-plugin-content-docs/current/user-manual/scenes/settings.md +source_file = docs/user-manual/scenes/settings.md +type = GITHUBMARKDOWN +minimum_perc = 0 +resource_name = content/en/user-manual/scenes/settings.md + [o:playcanvas:p:playcanvas-developer-site:r:user-manual-scripting-anatomy] file_filter = i18n//docusaurus-plugin-content-docs/current/user-manual/scripting/anatomy.md source_file = docs/user-manual/scripting/anatomy.md diff --git a/docs/user-manual/assets/types/texture-atlas.md b/docs/user-manual/assets/types/texture-atlas.md index eea34148e7..d77c3b4cd4 100644 --- a/docs/user-manual/assets/types/texture-atlas.md +++ b/docs/user-manual/assets/types/texture-atlas.md @@ -30,5 +30,5 @@ In addition to frame data the Texture Atlas contains the properties as a [textur [1]: /images/user-manual/assets/texture-atlas/texture-atlas.jpg [2]: /user-manual/assets/types/texture -[3]: /user-manual/editor/settings#create-atlases +[3]: /user-manual/scenes/settings#create-atlases [4]: /user-manual/assets/types/sprite diff --git a/docs/user-manual/editor/assets.md b/docs/user-manual/editor/assets.md index 44da70d726..449c985951 100644 --- a/docs/user-manual/editor/assets.md +++ b/docs/user-manual/editor/assets.md @@ -1,5 +1,5 @@ --- -title: Assets +title: Assets Panel sidebar_position: 5 --- diff --git a/docs/user-manual/editor/editor-api.md b/docs/user-manual/editor/editor-api.md index 2cb1e909e4..de7702714d 100644 --- a/docs/user-manual/editor/editor-api.md +++ b/docs/user-manual/editor/editor-api.md @@ -1,6 +1,6 @@ --- title: Editor API -sidebar_position: 10 +sidebar_position: 11 --- :::warning diff --git a/docs/user-manual/editor/keyboard-shortcuts.md b/docs/user-manual/editor/keyboard-shortcuts.md index dbd2efa76b..693d3891f9 100644 --- a/docs/user-manual/editor/keyboard-shortcuts.md +++ b/docs/user-manual/editor/keyboard-shortcuts.md @@ -1,6 +1,6 @@ --- title: Controls and Keyboard Shortcuts -sidebar_position: 11 +sidebar_position: 10 --- ## Camera Controls diff --git a/docs/user-manual/editor/settings.md b/docs/user-manual/editor/settings.md index eb0292c89c..de0e2a67e4 100644 --- a/docs/user-manual/editor/settings.md +++ b/docs/user-manual/editor/settings.md @@ -1,291 +1,38 @@ --- -title: Settings +title: Editor Settings sidebar_position: 7 --- -The Settings panel lets you set up various properties. It is accessed using the 'cog' button in the bottom left of the Editor (on the [Toolbar][1]). +By default, the Editor is configured with settings that should suit the majority of users. However, in some circumstances, you may wish to modify the default behavior of the Editor. To do this, load the Settings into the [Inspector](inspector.md) by clicking the 'cog' icon on the [Toolbar](toolbar.md) or in the [Viewport](viewport.md). -![Cog][2] +![Settings](/images/user-manual/editor/toolbar/settings.png) -## Editor {#editor} +Then, navigate to the `EDITOR` section: -These are personal preferences for the Editor. +![Editor Settings](/images/user-manual/editor/settings/editor-settings.png) -#### Grid {#grid} +:::note -You can set the number of divisions and the size of each division for the Grid that appears in the Editor scene. +Updates to Editor Settings apply only to the current project and only to you. In other words, they are personal preferences. They all persist over multiple sessions except for `Engine Version` which is reset at the start of each session. -#### Snap {#snap} +::: -This is the snap increment used when snapping is enabled. - -#### Camera Clip {#camera-clip} - -Here you can set the near and far clip planes for the Editor cameras. - -#### Clear Color {#clear-color} - -This is the clear color of the Editor cameras. - -#### Icon Size {#icon-size} - -This is the size of the icons that appear over various components inside the 3D viewport. Set this to 0 if you don't want to see icons at all. - -#### Local Server {#local-server} - -This is the URL where all the scripts are going to be loaded from, when launching the Application with Launch Local. - -#### Locale {#locale} - -The locale that you can preview in the Editor and when you Launch your application. This is only visible to you not other members of your team. This is used when you -have enabled Localization for Text Elements and when you use Localized Assets. - -## Physics Settings {#physics-settings} - -Physics settings affect the simulation of all the rigid body components in your scene. - -#### Enable {#enable} - -If this is enabled then the 3D physics library will be included in your Application. - -#### Gravity {#gravity} - -Gravity is the acceleration applied every frame to all rigid bodies in your scene. By default, it is set to -9.8 meters per second per second, which essentially approximates Earth's gravity. If you are making a game in space, you might want to set this to 0, 0, 0 (zero g). - -## Rendering {#rendering} - -Rendering settings affect various graphics related properties. - -#### Ambient Color {#ambient-color} - -The color of the scene's ambient light source. PlayCanvas allows you to create directional, point and spot lights. These lights account for direct light that falls on objects. But in reality, light actually bounces around the environment and we call this indirect light. A global ambient light is a crude approximation of this and allows you to set a light source that appears to shine from all directions. The global ambient color is multiplied with the Ambient property of a Phong Material to add a contribution to the final color of an object. - -Note, if you are using a Skybox and Physical Materials the Ambient Color has no effect. - -#### Skybox {#skybox} - -The Skybox is a [cubemap][3] asset that is rendered behind your 3D scene. This lets your use a set of 6 2D images to display the distant world beyond the 3D models in your scene. - -To add a skybox, create a cubemap asset and then assign it to the cubemap slot in the settings panel. - -Note, if you are using a Prefiltered Cubemap, the skybox will be used as the default environment map for all Physical materials. - -#### Skybox Intensity {#skybox-intensity} - -This is a slider that controls the intensity or brightness of the skybox. The value can range from 0 (totally black) to 32 (brightest). - -#### Skybox Mip {#skybox-mip} - -When using a Prefiltered Skybox, you can select the skybox mip that you want to display. Each mip is a more blurred version of the original Skybox. You can use this to show a more blurred / abstract version of your original Skybox for example for artistic purposes. - -#### Tonemapping {#tonemapping} - -Tonemapping is the process of compressing High Dynamic Range (HDR) colors into limited Low Dynamic Range (e.g. into visible monitor output values). There are two options for tone mapping. - -* **Linear:** imply scales HDR colors by exposure. -* **Filmic:** More sophisticated curve, good at softening overly bright spots, while preserving dark shades as well. - -Linear tone mapping is active by default, it's simply (color * exposure). You can tweak exposure to make quick changes to brightness. Note that it's not just simple brightness à la Photoshop because your input can be HDR. e.g. If you have a light source with intensity = 8, it will still be quite bright (4) after exposure = 0.5. So, all visible things won't just fade out linearly. - -Filmic tone mapping is a good choice in high-contrast environments, like scenes lit by bright Sun, or interiors with bright lights being close to walls/ceiling. It will nicely remap out-of-range super bright values to something more perceptually realistic (our eyes and film do tone mapping as well, we don't see physically linear values). Well, ask any photographer: nobody likes to leave extremely bright spots as well as pitch black spots on a photo. Filmic tone mapping gives you nice abilities to get rid of such spots. - -#### Exposure {#exposure} - -The exposure value tweaks the overall brightness of the scene. - -#### Gamma Correction {#gamma-correction} - -Computer screens are set up to output not physically linear, but perceptually linear (sRGB) signal. However, for correct appearance when performing lighting calculations, color textures must be converted to physically linear space, and then the fully lit image must be fit again into sRGB. Rendering with gamma correction enabled reduces the number of ugly, overly saturated highlights and better preserves color after lighting, and it's generally recommended that this be enabled in your scene. The following image shows a simple scene with a sphere. On the left the scene has been gamma corrected while on the right, the scene is uncorrected. - -![Gamma Correction][4] - -To find out more about gamma correction, read [this GPU Gems chapter][5]. - -#### Fog {#fog} - -The Fog Type property can be used to control an approximation of an ambient fog in your scene. Here is an example of fog being enabled: - -The types available are as follows: - -* None - Fog is disabled -* Linear - Fog fades in linearly between a Fog Start and Fog End distance -* Exp - Fog fades in from the view position according to an exponential function -* Exp2 - Fog fades in from the view position according to an exponential squared function - -#### Color {#color} - -The color of the fog. This color is blended with a surface's color more as the fog fades in. - -#### Start Distance {#start-distance} - -The distance in scene units from the viewpoint from where the fog starts to fade in. - -#### End Distance {#end-distance} - -The distance in scene units from the viewpoint from where the fog reaches a maximum. Any objects beyond this distance will be rendered with the fog color. - -#### Fog Density {#fog-density} - -The fog density controls the rate at which fog fades in for Exp and Exp2 fog types. Larger values cause fog to fade in more quickly. Fog density must be a positive number. - -#### Resolution {#resolution} - -Control the width and height of your Application. You can also set the resolution mode to one of the following values: - -* Auto - The resolution will always be the same as the canvas size -* Fixed - The resolution will always be width x height pixels. - -#### Fill Mode {#fill-mode} - -Fill mode controls the sizing behavior of the canvas. You can set one of the following values: - -* None - The canvas will be the same size as the resolution width and height. -* Keep aspect Ratio - The canvas will expand to fill the window while maintaining the correct aspect ratio. -* Fill window - The canvas will stretch to fill the window completely. - -#### Device Pixel Ratio {#device-pixel-ratio} - -When enabled the canvas resolution will be calculated including the device pixel ratio. - -#### Transparent Canvas {#transparent-canvas} - -Enable alpha-blending on the main canvas element. - -#### Preserve Drawing Buffer {#preserve-drawing-buffer} - -Use the preserveDrawingBuffer option when creating the WebGL context. - -## Layers {#layers} - -Manage rendering layers and their render order. You can find out more about layers [here][10]. - -## Audio {#audio} - -#### Use Legacy Audio {#use-legacy-audio} - -Enable the legacy audio components. Use this only for compatibility with old projects as it has been deprecated. - -## Lightmapping {#lightmapping} - -![Lightmapping Settings][12] - -#### Size Multiplier {#size-multiplier} - -Scene-wide multiplier applied to all lightmap sizes. - -#### Max Resolution {#max-resolution} - -The maximum texture size available for generated lightmap textures. - -#### Mode {#mode} - -Scene-wide mode for lightmap baking, with the following options: -- **Color Only** – Bakes a single lightmap containing HDR colors. -- **Color and Direction** – Bakes a second lightmap containing the dominant light direction, allowing for specular lighting. The Color and Direction mode is not compatible with [Soft Directional Light][13] or [Environment Light][14] baking. - -#### Filter {#filter} - -Enables bilateral filter on [Runtime Baked Lightmaps][15]. - -#### Range {#range} - -A range parameter of the bilateral filter. Larger values apply more widespread blur. - -#### Smoothness {#smoothness} - -A spatial parameter of the bilateral filter. Larger values blur colors that are less similar. - -#### Ambient Bake {#ambient-bake} - -Enables baking of [Environment Light][14]. - -#### Samples {#samples} - -The number of samples that are used to bake the ambient light into the lightmap. - -#### Sphere Part {#sphere-part} - -The amount of the sphere that is used to bake environment light. - -#### Occlusion Brightness {#occlusion-brightness} - -The brightness of the baked ambient occlusion. - -#### Occlusion Contrast {#occlusion-contrast} - -The contrast of the baked ambient occlusion. - -## Batch Groups {#batch-groups} - -Here you can create and manage Batch Groups for the Project. You can assign [Model][7] components and [Element][8] components to Batch Groups and the engine will attempt to reduce draw calls by merging the mesh instances of objects in the same group together. See more on Batching [here][9]. - -## Loading Screen (Available for ORG users only) {#loading-screen-available-for-org-users-only} - -Here you can set the script that creates the loading screen of you application. To create a new loading screen script click *Create Default*. See more information about custom loading screens [here][6]. - -## External Scripts {#external-scripts} - -Here you can specify the URLs of external scripts you would like to include in your application. These URLs are added as <script> tags in the main HTML page of the application before any other script is loaded. - -## Input {#input} - -Here you can enable or disable various input devices for your application. - -## Localization {#localization} - -Here you can specify JSON Assets that contain localization data. Assets in this list will automatically be parsed for localization data when loaded. These are used to localized your Text Elements. - -You can click CREATE NEW ASSET to create a new localization asset. You can then add data to that asset for the desired locale. - -Read more about localization [here][11]. - -## Asset Tasks {#asset-tasks} - -#### Auto-run {#auto-run} - -Run the asset pipeline automatically when an asset is uploaded. - -#### Textures POT (power-of-two) {#textures-pot-power-of-two} - -When a texture is imported resize it to be the nearest power of two. - -#### Create Atlases {#create-atlases} - -When a new image is uploaded it will be created as a Texture Atlas instead of a Texture. - -#### Search related assets {#search-related-assets} - -If an asset is updated with a new version, search for related assets (such as materials and textures) that were created from the original asset outside of the asset's folder. Otherwise, only check inside the current folder for related assets. - -#### Overwrite Model {#overwrite-model} - -When importing a scene (e.g. an FBX) this setting decides whether the model file is overwritten with a new version imported from the scene. - -#### Overwrite Animation {#overwrite-animation} - -When importing a scene (e.g. an FBX) this setting decides whether animation files are overwritten with a new version imported from the scene. - -#### Overwrite Material {#overwrite-material} - -When importing a scene (e.g. an FBX) this setting decides whether material files are overwritten with a new version imported from the scene. - -#### Overwrite Texture {#overwrite-texture} - -When importing a scene (e.g. an FBX) this setting decides whether texture files are overwritten with a new version imported from the scene. - -[1]: /user-manual/editor/toolbar -[2]: /images/user-manual/editor/settings/cog.jpg -[3]: /user-manual/assets/types/cubemap -[4]: /images/user-manual/editor/settings/gamma-correction.jpg -[5]: https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear -[6]: /user-manual/editor/launch-page/loading-screen -[7]: /user-manual/scenes/components/model -[8]: /user-manual/scenes/components/element -[9]: /user-manual/graphics/advanced-rendering/batching -[10]: /user-manual/graphics/layers/ -[11]: /user-manual/user-interface/localization -[12]: /images/user-manual/editor/settings/lightmapping-settings.png -[13]: /user-manual/graphics/lighting/runtime-lightmaps/#soft-directional-light -[14]: /user-manual/graphics/lighting/runtime-lightmaps/#baking-an-environment-light -[15]: /user-manual/graphics/lighting/runtime-lightmaps +Here is a breakdown of the available settings: +| Setting | Description | +| -------------------------------- | ----------- | +| **Grid Divisions** | Determines the number of divisions in the grid in the [Viewport](viewport.md). | +| **Grid Division Size** | Sets the size of each grid division, affecting the grid scale. | +| **Snap** | Sets the snap increment when using the [gizmos](viewport.md#gizmos) in the [Viewport](viewport.md). Useful for precise positioning. | +| **Camera Clip Near** | Sets the near clipping plane for all Editor cameras in the [Viewport](viewport.md). | +| **Camera Clip Far** | Sets the far clipping plane for all Editor cameras in the [Viewport](viewport.md). | +| **Camera Depth Grabpass** | Configures the camera to capture depth information for special effects. | +| **Camera Color Grabpass** | Configures the camera to capture color information for special effects. | +| **Zoom Sensitivity** | Adjusts the sensitivity of zooming in the [Viewport](viewport.md). | +| **Clear Color** | Sets the clear color for all Editor cameras in the [Viewport](viewport.md). | +| **Show Fog** | Toggles the visibility of fog in the [Viewport](viewport.md), even if it is enabled in the Scene Settings. | +| **Icons Size** | Changes the size of entity icons in the [Viewport](viewport.md). | +| **Engine Version** | The engine version to use in the [Launch Page](launch-page/index.md) or when [publishing a build](../publishing/web/playcanvas-hosting.md#publishing-a-new-build). Defaults to the current [stable release](https://github.com/playcanvas/engine/releases) of the PlayCanvas Engine. This setting only persists for the current session. | +| **Locale** | Sets the locale used by the [localization system](../user-interface/localization.md) for display in the [Viewport](viewport.md). | +| **Chat Notifications** | Toggles browser notifications for the Editor's built-in realtime chat. | +| **Rename Duplicated Entities** | If enabled, duplicated entity names get an incremental number added to the end. This helps to ensure unique naming of entities. | diff --git a/docs/user-manual/editor/viewport.md b/docs/user-manual/editor/viewport.md index 338d3975b2..1f09ef737f 100644 --- a/docs/user-manual/editor/viewport.md +++ b/docs/user-manual/editor/viewport.md @@ -7,7 +7,7 @@ sidebar_position: 4 The viewport shows your scene as currently rendered. You can freely move around the scene by manipulating the Editor's current camera. -## Cameras +## Cameras {#cameras} Initially the Editor is set to use the **Perspective** camera. This camera is as if a movie camera was floating in your scene. You can use the camera dropdown menu to view the scene using various other cameras. @@ -17,13 +17,13 @@ The **orthographic** cameras: Top, Bottom, Front, Back, Left, Right, let you vie You can also use the camera menu to select any of the camera Entities in your scene. This way you can position your in-game camera exactly as required. -## Gizmos +## Gizmos {#gizmos} ![Gizmos][3] The 3-Colored Axis you can see in the screenshot above is called a [Gizmo][4]. This is used to manipulate the transform matrix of the selected Entity. There are three types of Gizmo: Translate (with arrows on the ends of the axes); Rotate (which is made up of three colored rings) and Scale (with cubes on the ends of the axes). -## Render Mode +## Render Mode {#render-mode} You can modify the viewport render mode using this drop-down menu in the top-right of the viewport: diff --git a/docs/user-manual/faq.md b/docs/user-manual/faq.md index 146b0eba7d..e895846075 100644 --- a/docs/user-manual/faq.md +++ b/docs/user-manual/faq.md @@ -105,7 +105,7 @@ You can also right click on an Entity and select New Entity/Box to add a box (si To create a skybox for your scene you first need to create a [Cubemap asset](/user-manual/assets/types/cubemap/). Then you can drag and drop the Cubemap inside the 3D viewport, or you can go to the Scene Settings and drag the Cubemap in the Skybox field. -[Learn more](/user-manual/editor/settings/#skybox) +[Learn more](/user-manual/scenes/settings#skybox) @@ -186,7 +186,7 @@ To upload Assets simply drag and drop files from your computer into the Assets p To give physical properties to an Entity you need to add a [Collision component](/user-manual/scenes/components/collision/) to it and a [RigidBody component](/user-manual/scenes/components/rigidbody/). The Collision component gives a physical shape to the Entity and the RigidBody component makes the Entity be simulated by the physics engine. -You can change the default [gravity](/user-manual/editor/settings/#gravity) in the Scene Settings. +You can change the default [gravity](/user-manual/scenes/settings#gravity) in the Scene Settings. [View tutorial](/tutorials/collision-and-triggers/) diff --git a/docs/user-manual/graphics/advanced-rendering/batching.md b/docs/user-manual/graphics/advanced-rendering/batching.md index cd7083a5e2..4bf221e354 100644 --- a/docs/user-manual/graphics/advanced-rendering/batching.md +++ b/docs/user-manual/graphics/advanced-rendering/batching.md @@ -91,7 +91,7 @@ In this animation we have created 4 batch groups for the buildings, the cacti, t [3]: /images/user-manual/optimization/batching/western-scene.jpg [4]: /images/user-manual/optimization/batching/western-animation-all.gif [5]: /images/user-manual/optimization/batching/western-animation.gif -[6]: /user-manual/editor/settings/#batch-groups +[6]: /user-manual/scenes/settings#batch-groups [7]: /user-manual/scenes/components/model [8]: https://api.playcanvas.com/classes/Engine.BatchManager.html [9]: /user-manual/scenes/components/sprite diff --git a/docs/user-manual/graphics/lighting/runtime-lightmaps.md b/docs/user-manual/graphics/lighting/runtime-lightmaps.md index fe08f60740..7fe2c9ec64 100644 --- a/docs/user-manual/graphics/lighting/runtime-lightmaps.md +++ b/docs/user-manual/graphics/lighting/runtime-lightmaps.md @@ -155,9 +155,9 @@ The **Padding** option determines the space between sections when unwrapping occ [11]: /user-manual/graphics/advanced-rendering/batching [12]: /images/user-manual/graphics/lighting/lightmapping/editor-directional-light.png [13]: /images/user-manual/graphics/lighting/lightmapping/shadows-hard-soft.png -[14]: /user-manual/editor/settings/#ambient-color -[15]: /user-manual/editor/settings/#skybox -[16]: /user-manual/editor/settings/#lightmapping +[14]: /user-manual/scenes/settings#ambient-color +[15]: /user-manual/scenes/settings#skybox +[16]: /user-manual/scenes/settings#lightmapping [17]: /images/user-manual/graphics/lighting/lightmapping/lightmapping-settings-ambient-bake.png [18]: /images/user-manual/graphics/lighting/lightmapping/ambient-color.png [19]: /images/user-manual/graphics/lighting/lightmapping/lightmap-15-samples.png diff --git a/docs/user-manual/publishing/web/playcanvas-hosting.md b/docs/user-manual/publishing/web/playcanvas-hosting.md index c1fdb25e61..543a1e0355 100644 --- a/docs/user-manual/publishing/web/playcanvas-hosting.md +++ b/docs/user-manual/publishing/web/playcanvas-hosting.md @@ -12,7 +12,7 @@ Publishing to PlayCanvas consists of two simple steps: To publish you will need to have at least one scene in your project. -## Publishing a new Build +## Publishing a new Build {#publishing-a-new-build} * Go to your Project and open the Editor. * Click on the button in the left hand side toolbar or click Publishing in the top left Menu @@ -48,7 +48,7 @@ To publish you will need to have at least one scene in your project. Builds are given permanent link in the form `https://playcanv.as/b/BUILD_ID/`. This link will be valid until you delete the build. If you want to share a link to your game, you should probably use the published project link explained below. -## Selecting a Primary Build +## Selecting a Primary Build {#selecting-a-primary-build} Click Builds on the same popup. diff --git a/docs/user-manual/scenes/components/collision.md b/docs/user-manual/scenes/components/collision.md index 0e54472531..1c015a623b 100644 --- a/docs/user-manual/scenes/components/collision.md +++ b/docs/user-manual/scenes/components/collision.md @@ -32,7 +32,7 @@ If the entity also has a rigidbody component, the collision component determines | Axis | Capsule only. Aligns the capsule with the local-space X, Y or Z axis of the entity. | | Height | Capsule only. The tip-to-tip height of the capsule. | | Radius | Sphere and Capsule only. The radius of the sphere or capsule body. | -| Asset | Mesh only. The model asset that will be used as a source for the triangle-based collision mesh. | +| Asset | Mesh only. The [render asset](../../assets/types/render.md) or model asset that will be used as a source for the triangle-based collision mesh. | ## Scripting Interface diff --git a/docs/user-manual/scenes/index.md b/docs/user-manual/scenes/index.md index 4cb3599e37..c21a7c9d68 100644 --- a/docs/user-manual/scenes/index.md +++ b/docs/user-manual/scenes/index.md @@ -10,41 +10,27 @@ Scenes contain: They are edited using the PlayCanvas Editor. -![][scene-list-png] +![](/images/user-manual/scenes/scene-list.png) ## Scene Hierarchy -The **Scene Hierarchy** is a graph of [Entities][entities] that can have [Components][components] to give these Entities behaviors such as having a mesh to render in the world or to play sound effects. They can also be given custom behavior with [scripts][scripts]. +The **Scene Hierarchy** is a graph of [Entities](entities) that can have [Components](components) to give these Entities behaviors such as having a mesh to render in the world or to play sound effects. They can also be given custom behavior with [scripts](../scripting). ## Scene Settings -**Scene Settings** contain global rendering and physics information and properties about the scene. These can be edited in the project [settings][project-settings] within the Editor. +**Scene Settings** contain global rendering and physics information and properties about the scene. These can be edited in the project [settings](settings) within the Editor. The full list of Scene Settings are: -* [Physics gravity][settings-gravity] (1) -* [Global ambient color][settings-ambient] (2) -* [Skybox][settings-skybox] (3) -* [Tonemapping][settings-tonemapping] (4) -* [Exposure][settings-exposure] (5) -* [Gamma Correction][settings-gamma] (6) -* [Fog][settings-fog] (7) -* [Lightmap properties][settings-lightmap] (8) +* [Physics gravity](settings#gravity) (1) +* [Global ambient color](settings#ambient-color) (2) +* [Skybox](settings#skybox) (3) +* [Tonemapping](settings#tonemapping) (4) +* [Exposure](settings#exposure) (5) +* [Gamma Correction](settings#gamma-correction) (6) +* [Fog](settings#fog) (7) +* [Lightmap properties](settings#lightmapping) (8) - -[entities]: /user-manual/scenes/entities/ -[components]: /user-manual/scenes/components/ -[scripts]: /user-manual/scripting/ -[scene-list-png]: /images/user-manual/scenes/scene-list.png -[project-settings]: /user-manual/editor/settings/ -[settings-gravity]: /user-manual/editor/settings/#gravity -[settings-ambient]: /user-manual/editor/settings/#ambient-color -[settings-skybox]: /user-manual/editor/settings/#skybox -[settings-tonemapping]: /user-manual/editor/settings/#tonemapping -[settings-exposure]: /user-manual/editor/settings/#exposure -[settings-gamma]: /user-manual/editor/settings/#gamma-correction -[settings-fog]: /user-manual/editor/settings/#fog -[settings-lightmap]: /user-manual/editor/settings/#lightmapping diff --git a/docs/user-manual/scenes/loading-scenes.md b/docs/user-manual/scenes/loading-scenes.md index adfc6093e8..8b22621291 100644 --- a/docs/user-manual/scenes/loading-scenes.md +++ b/docs/user-manual/scenes/loading-scenes.md @@ -1,10 +1,8 @@ --- title: Loading Scenes -sidebar_position: 3 +sidebar_position: 4 --- -## Introduction - This page will take you through loading scenes with code and also some different approaches of using scenes in projects. There are two main approaches in using scenes: changing scenes completely and additively loading scenes. @@ -21,7 +19,7 @@ This is the most common approach that developers take where each scene is a self This is done by simply calling [`SceneRegistry.changeScene`][changescene-api] with the name of the scene. -``` +```javascript this.app.scenes.changeScene('Some Scene Name'); ``` @@ -34,7 +32,7 @@ If the scene data is not already loaded, this function will: If you want to know when the scene is loaded or if there are errors, you will need to provide a callback: -``` +```javascript this.app.scenes.changeScene('Some Scene Name', (err, loadedSceneRootEntity) { if (err) { console.error(err); @@ -87,9 +85,9 @@ There are two APIs to load the scene hierarchy and settings: Here is a code example to load the scene hierarchy or settings: -``` +```javascript // Find the Scene Registry Item by the name of the scene -var sceneItem = this.app.scenes.find('Some Scene Name'); +const sceneItem = this.app.scenes.find('Some Scene Name'); // Load the scene hierarchy with a callback when it has finished this.app.scenes.loadSceneHierarchy(sceneItem, function (err, loadedSceneRootEntity) { @@ -134,12 +132,12 @@ There are several ways to approach this with pros and cons: This approach has discrete steps that make it easier to manage where the currently loaded scene is destroyed before loading and creation of the new scene. -``` +```javascript // Find the Scene Registry Item by the name of the scene -var sceneItem = this.app.scenes.find('Some Scene Name'); +const sceneItem = this.app.scenes.find('Some Scene Name'); // Destroy all children under application root to remove the currently loaded scene hierarchy -var rootChildren = this.app.root.children; +const rootChildren = this.app.root.children; while(rootChildren.length > 0) { rootChildren[0].destroy(); } @@ -160,12 +158,12 @@ However, as mentioned above, there is a delay between calling `loadSceneHierarch This would mean that the old scene hierarchy will be destroyed in the callback after the new scene hierarchy has been added to hierarchy which ensures that the old scene would be present while the scene data is loaded from network. -``` +```javascript // Find the Scene Registry Item by the name of the scene -var sceneItem = this.app.scenes.find('Some Scene Name'); +const sceneItem = this.app.scenes.find('Some Scene Name'); // Assume the old scene hierarchy's root entity is named 'Root' which is the default name -var oldSceneRootEntity = this.app.root.findByName('Root'); +const oldSceneRootEntity = this.app.root.findByName('Root'); // Load the scene hierarchy with a callback when it has finished this.app.scenes.loadSceneHierarchy(sceneItem, function (err, loadedSceneRootEntity) { diff --git a/docs/user-manual/editor/scenes.md b/docs/user-manual/scenes/managing-scenes.md similarity index 75% rename from docs/user-manual/editor/scenes.md rename to docs/user-manual/scenes/managing-scenes.md index a96a4fe77d..9c5a489481 100644 --- a/docs/user-manual/editor/scenes.md +++ b/docs/user-manual/scenes/managing-scenes.md @@ -1,10 +1,8 @@ --- -title: Scenes -sidebar_position: 9 +title: Managing Scenes +sidebar_position: 3 --- -## Scenes - You can manage your scenes by opening the Scenes dialog. You can open the Scenes dialog either by clicking on the 'Scenes' menu option in the menu: @@ -21,6 +19,6 @@ This will open up the Scenes dialog: You can create a new scene by clicking on "ADD NEW SCENE", you can click on a scene to open it up and you can click on the buttons on the right of each scene to duplicate a scene or delete it. You can also click on the banner icon on the left to make it the first scene loaded when you publish an app or when you export your project. Think of it as the first 'level' in your application. -[1]: /images/user-manual/editor/scenes-menu.jpg -[2]: /images/user-manual/editor/scenes-viewport.jpg -[3]: /images/user-manual/editor/scenes.jpg +[1]: /images/user-manual/scenes/managing-scenes/scenes-menu.jpg +[2]: /images/user-manual/scenes/managing-scenes/scenes-viewport.jpg +[3]: /images/user-manual/scenes/managing-scenes/scenes.jpg diff --git a/docs/user-manual/scenes/settings.md b/docs/user-manual/scenes/settings.md new file mode 100644 index 0000000000..72bd6b29f6 --- /dev/null +++ b/docs/user-manual/scenes/settings.md @@ -0,0 +1,258 @@ +--- +title: Scene Settings +sidebar_position: 5 +--- + +The Settings panel lets you set up various properties. It is accessed using the 'cog' button in the bottom left of the Editor (on the [Toolbar][1]). + +![Cog][2] + +## Physics Settings {#physics-settings} + +Physics settings affect the simulation of all the rigid body components in your scene. + +#### Enable {#enable} + +If this is enabled then the 3D physics library will be included in your Application. + +#### Gravity {#gravity} + +Gravity is the acceleration applied every frame to all rigid bodies in your scene. By default, it is set to -9.8 meters per second per second, which essentially approximates Earth's gravity. If you are making a game in space, you might want to set this to 0, 0, 0 (zero g). + +## Rendering {#rendering} + +Rendering settings affect various graphics related properties. + +#### Ambient Color {#ambient-color} + +The color of the scene's ambient light source. PlayCanvas allows you to create directional, point and spot lights. These lights account for direct light that falls on objects. But in reality, light actually bounces around the environment and we call this indirect light. A global ambient light is a crude approximation of this and allows you to set a light source that appears to shine from all directions. The global ambient color is multiplied with the Ambient property of a Phong Material to add a contribution to the final color of an object. + +Note, if you are using a Skybox and Physical Materials the Ambient Color has no effect. + +#### Skybox {#skybox} + +The Skybox is a [cubemap][3] asset that is rendered behind your 3D scene. This lets your use a set of 6 2D images to display the distant world beyond the 3D models in your scene. + +To add a skybox, create a cubemap asset and then assign it to the cubemap slot in the settings panel. + +Note, if you are using a Prefiltered Cubemap, the skybox will be used as the default environment map for all Physical materials. + +#### Skybox Intensity {#skybox-intensity} + +This is a slider that controls the intensity or brightness of the skybox. The value can range from 0 (totally black) to 32 (brightest). + +#### Skybox Mip {#skybox-mip} + +When using a Prefiltered Skybox, you can select the skybox mip that you want to display. Each mip is a more blurred version of the original Skybox. You can use this to show a more blurred / abstract version of your original Skybox for example for artistic purposes. + +#### Tonemapping {#tonemapping} + +Tonemapping is the process of compressing High Dynamic Range (HDR) colors into limited Low Dynamic Range (e.g. into visible monitor output values). There are two options for tone mapping. + +* **Linear:** imply scales HDR colors by exposure. +* **Filmic:** More sophisticated curve, good at softening overly bright spots, while preserving dark shades as well. + +Linear tone mapping is active by default, it's simply (color * exposure). You can tweak exposure to make quick changes to brightness. Note that it's not just simple brightness à la Photoshop because your input can be HDR. e.g. If you have a light source with intensity = 8, it will still be quite bright (4) after exposure = 0.5. So, all visible things won't just fade out linearly. + +Filmic tone mapping is a good choice in high-contrast environments, like scenes lit by bright Sun, or interiors with bright lights being close to walls/ceiling. It will nicely remap out-of-range super bright values to something more perceptually realistic (our eyes and film do tone mapping as well, we don't see physically linear values). Well, ask any photographer: nobody likes to leave extremely bright spots as well as pitch black spots on a photo. Filmic tone mapping gives you nice abilities to get rid of such spots. + +#### Exposure {#exposure} + +The exposure value tweaks the overall brightness of the scene. + +#### Gamma Correction {#gamma-correction} + +Computer screens are set up to output not physically linear, but perceptually linear (sRGB) signal. However, for correct appearance when performing lighting calculations, color textures must be converted to physically linear space, and then the fully lit image must be fit again into sRGB. Rendering with gamma correction enabled reduces the number of ugly, overly saturated highlights and better preserves color after lighting, and it's generally recommended that this be enabled in your scene. The following image shows a simple scene with a sphere. On the left the scene has been gamma corrected while on the right, the scene is uncorrected. + +![Gamma Correction][4] + +To find out more about gamma correction, read [this GPU Gems chapter][5]. + +#### Fog {#fog} + +The Fog Type property can be used to control an approximation of an ambient fog in your scene. Here is an example of fog being enabled: + +The types available are as follows: + +* None - Fog is disabled +* Linear - Fog fades in linearly between a Fog Start and Fog End distance +* Exp - Fog fades in from the view position according to an exponential function +* Exp2 - Fog fades in from the view position according to an exponential squared function + +#### Color {#color} + +The color of the fog. This color is blended with a surface's color more as the fog fades in. + +#### Start Distance {#start-distance} + +The distance in scene units from the viewpoint from where the fog starts to fade in. + +#### End Distance {#end-distance} + +The distance in scene units from the viewpoint from where the fog reaches a maximum. Any objects beyond this distance will be rendered with the fog color. + +#### Fog Density {#fog-density} + +The fog density controls the rate at which fog fades in for Exp and Exp2 fog types. Larger values cause fog to fade in more quickly. Fog density must be a positive number. + +#### Resolution {#resolution} + +Control the width and height of your Application. You can also set the resolution mode to one of the following values: + +* Auto - The resolution will always be the same as the canvas size +* Fixed - The resolution will always be width x height pixels. + +#### Fill Mode {#fill-mode} + +Fill mode controls the sizing behavior of the canvas. You can set one of the following values: + +* None - The canvas will be the same size as the resolution width and height. +* Keep aspect Ratio - The canvas will expand to fill the window while maintaining the correct aspect ratio. +* Fill window - The canvas will stretch to fill the window completely. + +#### Device Pixel Ratio {#device-pixel-ratio} + +When enabled the canvas resolution will be calculated including the device pixel ratio. + +#### Transparent Canvas {#transparent-canvas} + +Enable alpha-blending on the main canvas element. + +#### Preserve Drawing Buffer {#preserve-drawing-buffer} + +Use the preserveDrawingBuffer option when creating the WebGL context. + +## Layers {#layers} + +Manage rendering layers and their render order. You can find out more about layers [here][10]. + +## Audio {#audio} + +#### Use Legacy Audio {#use-legacy-audio} + +Enable the legacy audio components. Use this only for compatibility with old projects as it has been deprecated. + +## Lightmapping {#lightmapping} + +![Lightmapping Settings][12] + +#### Size Multiplier {#size-multiplier} + +Scene-wide multiplier applied to all lightmap sizes. + +#### Max Resolution {#max-resolution} + +The maximum texture size available for generated lightmap textures. + +#### Mode {#mode} + +Scene-wide mode for lightmap baking, with the following options: +- **Color Only** – Bakes a single lightmap containing HDR colors. +- **Color and Direction** – Bakes a second lightmap containing the dominant light direction, allowing for specular lighting. The Color and Direction mode is not compatible with [Soft Directional Light][13] or [Environment Light][14] baking. + +#### Filter {#filter} + +Enables bilateral filter on [Runtime Baked Lightmaps][15]. + +#### Range {#range} + +A range parameter of the bilateral filter. Larger values apply more widespread blur. + +#### Smoothness {#smoothness} + +A spatial parameter of the bilateral filter. Larger values blur colors that are less similar. + +#### Ambient Bake {#ambient-bake} + +Enables baking of [Environment Light][14]. + +#### Samples {#samples} + +The number of samples that are used to bake the ambient light into the lightmap. + +#### Sphere Part {#sphere-part} + +The amount of the sphere that is used to bake environment light. + +#### Occlusion Brightness {#occlusion-brightness} + +The brightness of the baked ambient occlusion. + +#### Occlusion Contrast {#occlusion-contrast} + +The contrast of the baked ambient occlusion. + +## Batch Groups {#batch-groups} + +Here you can create and manage Batch Groups for the Project. You can assign [Model][7] components and [Element][8] components to Batch Groups and the engine will attempt to reduce draw calls by merging the mesh instances of objects in the same group together. See more on Batching [here][9]. + +## Loading Screen (Available for ORG users only) {#loading-screen-available-for-org-users-only} + +Here you can set the script that creates the loading screen of you application. To create a new loading screen script click *Create Default*. See more information about custom loading screens [here][6]. + +## External Scripts {#external-scripts} + +Here you can specify the URLs of external scripts you would like to include in your application. These URLs are added as <script> tags in the main HTML page of the application before any other script is loaded. + +## Input {#input} + +Here you can enable or disable various input devices for your application. + +## Localization {#localization} + +Here you can specify JSON Assets that contain localization data. Assets in this list will automatically be parsed for localization data when loaded. These are used to localized your Text Elements. + +You can click CREATE NEW ASSET to create a new localization asset. You can then add data to that asset for the desired locale. + +Read more about localization [here][11]. + +## Asset Tasks {#asset-tasks} + +#### Auto-run {#auto-run} + +Run the asset pipeline automatically when an asset is uploaded. + +#### Textures POT (power-of-two) {#textures-pot-power-of-two} + +When a texture is imported resize it to be the nearest power of two. + +#### Create Atlases {#create-atlases} + +When a new image is uploaded it will be created as a Texture Atlas instead of a Texture. + +#### Search related assets {#search-related-assets} + +If an asset is updated with a new version, search for related assets (such as materials and textures) that were created from the original asset outside of the asset's folder. Otherwise, only check inside the current folder for related assets. + +#### Overwrite Model {#overwrite-model} + +When importing a scene (e.g. an FBX) this setting decides whether the model file is overwritten with a new version imported from the scene. + +#### Overwrite Animation {#overwrite-animation} + +When importing a scene (e.g. an FBX) this setting decides whether animation files are overwritten with a new version imported from the scene. + +#### Overwrite Material {#overwrite-material} + +When importing a scene (e.g. an FBX) this setting decides whether material files are overwritten with a new version imported from the scene. + +#### Overwrite Texture {#overwrite-texture} + +When importing a scene (e.g. an FBX) this setting decides whether texture files are overwritten with a new version imported from the scene. + +[1]: /user-manual/editor/toolbar +[2]: /images/user-manual/scenes/settings/cog.jpg +[3]: /user-manual/assets/types/cubemap +[4]: /images/user-manual/scenes/settings/gamma-correction.jpg +[5]: https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear +[6]: /user-manual/editor/launch-page/loading-screen +[7]: /user-manual/scenes/components/model +[8]: /user-manual/scenes/components/element +[9]: /user-manual/graphics/advanced-rendering/batching +[10]: /user-manual/graphics/layers/ +[11]: /user-manual/user-interface/localization +[12]: /images/user-manual/scenes/settings/lightmapping-settings.png +[13]: /user-manual/graphics/lighting/runtime-lightmaps/#soft-directional-light +[14]: /user-manual/graphics/lighting/runtime-lightmaps/#baking-an-environment-light +[15]: /user-manual/graphics/lighting/runtime-lightmaps + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/assets/types/texture-atlas.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/assets/types/texture-atlas.md index 12fa80c5ea..fb62a5806b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/assets/types/texture-atlas.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/assets/types/texture-atlas.md @@ -30,5 +30,5 @@ title: Texture Atlas [1]: /images/user-manual/assets/texture-atlas/texture-atlas.jpg [2]: /user-manual/assets/types/texture -[3]: /user-manual/editor/settings#create-atlases +[3]: /user-manual/scenes/settings#create-atlases [4]: /user-manual/assets/types/sprite diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/assets.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/assets.md index 18617773b3..9c35c17c9f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/assets.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/assets.md @@ -1,5 +1,5 @@ --- -title: アセット (Asset) +title: Assets Panel sidebar_position: 5 --- diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/settings.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/settings.md index 97b979b45c..6f23eb580e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/settings.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/settings.md @@ -1,290 +1,38 @@ --- -title: 設定 +title: Editor Settings sidebar_position: 7 --- -設定パネル (SETTINGS) を使用すると、さまざまなプロパティを設定できます。エディターの左下にある`cog`ボタン([ツールバー][1])を使用してアクセスできます。 +By default, the Editor is configured with settings that should suit the majority of users. However, in some circumstances, you may wish to modify the default behavior of the Editor. To do this, load the Settings into the [Inspector](inspector.md) by clicking the 'cog' icon on the [Toolbar](toolbar.md) or in the [Viewport](viewport.md). -![Cog][2] +![Settings](/images/user-manual/editor/toolbar/settings.png) -## エディター {#editor} +Then, navigate to the `EDITOR` section: -これらは、エディターのユーザによる設定です。 +![Editor Settings](/images/user-manual/editor/settings/editor-settings.png) -#### グリッド (Grid) {#grid} +:::note -エディターシーンに表示されるグリッドの分割数と各分割のサイズを設定できます。 +Updates to Editor Settings apply only to the current project and only to you. In other words, they are personal preferences. They all persist over multiple sessions except for `Engine Version` which is reset at the start of each session. -#### スナップ (Snap) {#snap} +::: -スナップが有効になっている場合に使用されるスナップインクリメントです。 - -#### カメラクリップ (Camera Clip) {#camera-clip} - -ここでは、エディタのカメラに対する近接クリップ平面と遠方クリップ平面を設定できます。 - -#### クリアカラー (Clear Color) {#clear-color} - -エディターカメラのクリアカラーです。 - -#### アイコンサイズ (Icon Size) {#icon-size} - -3Dビューポート内のさまざまなコンポーネントに表示されるアイコンのサイズです。アイコンを表示しない場合は0に設定してください。 - -#### Local Server {#local-server} - -これは、アプリケーションをローカルで起動する際に、すべてのスクリプトがロードされるURLです。 - -#### ロケール (Locale) {#locale} - -エディタでプレビューできる、またはアプリケーションを起動したときのロケールです。これはあなただけが見ることができ、チームの他のメンバーには見えません。これは、テキストエレメントのローカライゼーションを有効にしたときや、ローカライズされたアセットを使用するときに使われます。 - -## 物理設定 (Physics Settings) {#physics-settings} - -物理設定は、シーン内のすべてのRigidBodyコンポーネントのシミュレーションに影響します。 - -#### 有効化 (Enable) {#enable} - -3D物理ライブラリがアプリケーションに含まれる場合は、有効にしてください。 - -#### 重力 (Gravity) {#gravity} - -重力は、シーン内のすべての剛体にフレームごとに適用される加速度です。デフォルトでは、1秒間あたり約9.8メートルの速度で近似的に地球の重力を表します。宇宙でゲームを作成している場合は、これを0, 0, 0(ゼロG)に設定することができます。 - -## レンダリング (Rendering) {#rendering} - -レンダリング設定は、さまざまなグラフィックス関連のプロパティに影響を与えます。 - -#### アンビエントカラー (Ambient Color) {#ambient-color} - -シーンの環境光源の色です。PlayCanvasでは、方向性、点、スポットライトを作成できます。これらのライトは、オブジェクトに落ちる直接光を考慮しています。しかし、現実では、光は環境中を反射し、これを間接光と呼びます。グローバル環境光はこれをおおまかに近似し、すべての方向から輝くように見える光源を設定できます。グローバル環境色は、Phongマテリアルの環境プロパティと乗算され、オブジェクトの最終色に寄与します。 - -Skyboxと物理マテリアルを使用している場合、アンビエントカラーには影響がありません。 - -#### スカイボックス (Skybox) {#skybox} - -Skyboxは、3Dシーンの背後にレンダリングされる[cubemap][3]アセットです。これにより、シーン内の3Dモデルを超えた遠くの世界を表示するために6つの2D画像セットを使用できます。 - -Skyboxを追加するには、cubemapアセットを作成して、設定パネルのcubemapスロットに割り当てます。 - -Prefiltered Cubemapを使用している場合、skyboxはPhysical materialsのデフォルトの環境マップとして使用されます。 - -#### スカイボックスの強度 (Skybox Intensity) {#skybox-intensity} - -これは、skyboxの強度または明るさを制御するスライダーです。値は0(完全に黒)から32(最も明るい)までの範囲になります。 - -#### Skybox Mip {#skybox-mip} - -Prefiltered Skyboxを使用する場合、表示するskybox mipを選択できます。各mipは、元のSkyboxのよりぼやけたバージョンです。これを使用して、元のSkyboxのよりぼやけた/抽象的なバージョンを表示することができます。 - -#### トーンマッピング (Tonemapping) {#tonemapping} - -トーンマッピングは、High Dynamic Range(HDR)カラーを限られたLow Dynamic Range(例えば、可視モニター出力値)に圧縮するプロセスです。トーンマッピングには2つのオプションがあります。 - -* **Linear:** HDRカラーを露光で単純にスケーリングします。 -* **Filmic:** より洗練された曲線で、明るすぎるスポットを柔らかくするのに適していますが、暗いシェードも保存します。 - -Linearのトーンマッピングはデフォルトで有効になっており、シンプルにcolor * 露出 (exposure) になります。明るさを素早く変更するには露出を調整できます。入力がHDRであるため、これはPhotoshopのような単純な明るさではありません。たとえば、強度 (intensity) = 8の光源がある場合、露出= 0.5の場合でもかなり明るく(4)なります。すべての目に見えるものは直線的にフェードアウトするだけではありません。 - -Filmicのトーンマッピングは、明るい太陽で照らされたシーンや、壁/天井に近い明るい光があるインテリアなど、高コントラストな環境で良い選択肢です。範囲外の超明るい値を何かより知覚的に現実的なものにきれいにリマップします(私たちの目とフィルムもトーンマッピングを行います、物理的に線形の値を見るわけではありません)。写真家に聞いてみてください。誰もが、非常に明るいスポットと真っ暗なスポットを写真に残したくありません。フィルム風のトーンマッピングにより、そのようなスポットを取り除く素晴らしい機能が提供されます。 - -#### 露出 (Exposure) {#exposure} - -露出値はシーン全体の明るさを微調整します。 - -#### ガンマ補正 (Gamma Correction) {#gamma-correction} - -コンピュータのスクリーンは、物理的には線形ではなく知覚的に線形 (sRGB) な信号を出力するように設定されています。しかし、照明計算を行う際に正しい外観を得るためには、カラーテクスチャを物理的に線形な空間に変換し、完全に照らされたイメージを再び sRGB に合わせる必要があります。ガンマ補正を有効にしてレンダリングすると、不格好で過度に飽和したハイライトの数を減らすことができ、照明後の色をより正確に保持することができます。一般的に、シーンでこれを有効にすることが推奨されます。以下の画像は球体がある単純なシーンで、左側がガンマ補正されたシーンで、右側が補正されていないシーンです。 - -![Gamma Correction][4] - -ガンマ補正についてもっと知りたい場合は、[このGPU Gemsの章][5]を読んでください。 - -#### フォグ (Fog) {#fog} - -Fog Type プロパティを使用して、シーンで環境フォグの近似を制御できます。以下は、フォグが有効になっている例です。 - -使用可能なタイプは以下の通りです。 - -* None - フォグが無効になっています -* Linear - フォグは、フォグの開始距離とフォグの終了距離の間で線形にフェードします。 -* Exp - フォグは、指数関数に従ってビューポジションからフェードインします。 -* Exp2 - フォグは、二乗の指数関数に従ってビューポジションからフェードインします。 - -#### Color {#color} - -フォグの色。この色は、フォグがフェードインするにつれて、表面の色に混ぜ込まれます。 - -#### 開始距離 (Start Distance) {#start-distance} - -フォグがフェードインし始めるビューポイントからのシーン単位での距離です。 - -#### 終了距離 (End Distance) {#end-distance} - -フォグが最大に達するビューポイントからのシーン単位での距離です。この距離を超えるオブジェクトは、フォグの色でレンダリングされます。 - -#### フォグ密度 (Fog Density) {#fog-density} - -フォグ密度は、ExpおよびExp2フォグタイプに対してフォグがフェードインする速度を制御します。大きな値はフォグがより速くフェードインするようになります。フォグ密度は正の数でなければなりません。 - -#### Resolution {#resolution} - -アプリケーションの幅と高さを制御します。解像度モードを以下のいずれかの値に設定することもできます。 - -* Auto - 解像度は常にキャンバスサイズと同じになります。 -* Fixed - 解像度は常に幅x高さのピクセルになります。 - -#### フィルモード (Fill Mode) {#fill-mode} - -フィルモードは、キャンバスのサイズ調整の動作を制御します。以下の値のいずれかを設定できます。 - -* None - キャンバスは解像度の幅と高さと同じサイズになります。 -* Keep aspect Ratio - キャンバスは正しいアスペクト比を保持しながらウィンドウを拡大します。 -* Fill window - キャンバスはウィンドウを完全にフィルするようにストレッチされます。 - -#### デバイスピクセル比率 (DPI) {#device-pixel-ratio} - -キャンバスの解像度がデバイスピクセル比を含めて計算されるようになります。 - -#### 透明なキャンバス (Transparent Canvas) {#transparent-canvas} - -メインのcanvas要素でアルファブレンディングを有効にします。 - -#### 描画バッファの保持 (Preserve Drawing Buffer) {#preserve-drawing-buffer} - -WebGLコンテキストを作成する際、preserveDrawingBufferオプションを使用します。 - -## レイヤーの一覧 (Layers) {#layers} - -レンダリングレイヤーとその描画順序を管理します。レイヤーについての詳細は[こちら][10]を参照してください。 - -## オーディオ (Audio) {#audio} - -#### レガシーオーディオの使用 (Use Legacy Audio) {#use-legacy-audio} - -レガシーオーディオコンポーネントを有効にします。これは廃止された古いプロジェクトとの互換性のためにのみ使用してください。 - -## ライトマッピング (Lightmapping) {#lightmapping} - -![Lightmapping Settings][12] - -#### サイズの乗数 (Size Multiplier) {#size-multiplier} - -すべてのライトマップサイズに適用されるシーン全体の乗数。 - -#### 最大解像度 (Max Resolution) {#max-resolution} - -生成されたライトマップテクスチャに使用可能な最大テクスチャサイズ。 - -#### モード (Mode) {#mode} - -シーン全体のライトマップの焼き込みに使用されるモードで、次のオプションがあります。 -- **Color Only** - HDRカラーを含む単一のライトマップを焼き込みます。 -- **Color and Direction** - 主要なライト方向を含む2番目のライトマップを焼き込みます。Specular Lightingを使用することができます。Color and Directionモードは、[Soft Directional Light][13]または[Environment Light][14]のベイクとは互換性がありません - -#### フィルター (Filter) {#filter} - -[Runtime Baked Lightmaps][15](ランタイムベイクドライトマップ)に対してバイラテラルフィルタを有効にします。 - -#### Range {#range} - -バイラテラルフィルタの範囲パラメータ。大きい値ほど広範囲のぼかしが適用されます。 - -#### 滑らかさ (Smoothness) {#smoothness} - -バイラテラルフィルタの空間パラメータです。大きな値を設定すると、色の類似性が低いものほどぼかされます。 - -#### Ambient Bake (アンビエントベイク) {#ambient-bake} - -[Environment Light][14]の焼き込みを有効にします。 - -#### Samples (サンプル数) {#samples} - -環境光をライトマップにベイクするために使用されるサンプル数。 - -#### Sphere Part {#sphere-part} - -環境光をベイクするために使用される球の割合。 - -#### オクルージョンの明るさ (Occlusion Brightness) {#occlusion-brightness} - -ベイクされたアンビエントオクルージョンの明るさ。 - -#### オクルージョンコントラスト (Occlusion Contrast) {#occlusion-contrast} - -ベイクされたアンビエントオクルージョンのコントラスト。 - -## バッチグループ {#batch-groups} - -プロジェクトのバッチグループを作成・管理することができます。[Model][7]コンポーネントや[Element][8]コンポーネントをバッチグループに割り当てることができ、同じグループ内のオブジェクトのメッシュインスタンスを結合して描画コールを減らすようにエンジンが試みます。バッチ処理については[こちら][9]を参照してください。 - -## ローディングスクリーン {#loading-screen-available-for-org-users-only} - -アプリケーションのローディング画面を作成するスクリプトを設定できます。新しいローディングスクリーンスクリプトを作成するには、*Create Default*をクリックしてください。カスタムローディングスクリーンに関する詳細は[こちら][6]を参照してください。 - -## 外部スクリプト (External Scripts) {#external-scripts} - -アプリケーションに含めたい外部スクリプトのURLを指定できます。これらのURLは、他のスクリプトがロードされる前にアプリケーションのメインHTMLページに<script>タグとして追加されます。 - -## Input {#input} - -アプリケーションで使用する入力デバイスを有効または無効にできます。 - -## ローカライゼーション (Localization) {#localization} - -ローカライズデータを含むJSONアセットを指定できます。このリストにあるアセットは、ロードされると自動的にローカライズデータを解析します。これらは、テキストエレメントをローカライズするために使用されます。 - -新しいローカライズアセットを作成するには、CREATE NEW ASSETをクリックしてください。そのアセットに対して、必要なロケールのデータを追加することができます。 - -ローカライズについての詳細は[こちら][11]を参照してください。 - -## アセットタスク (Asset Tasks) {#asset-tasks} - -#### Auto-run {#auto-run} - -アセットがアップロードされると、アセットパイプラインを自動的に実行します。 - -#### Textures POT (power-of-two) (テクスチャの2の累乗リサイズ) {#textures-pot-power-of-two} - -テクスチャがインポートされると、最も近い2の累乗にリサイズします。 - -#### アトラスを作成 (Create Atlases) {#create-atlases} - -新しい画像がアップロードされると、テクスチャの代わりにテクスチャアトラスが作成されます。 - -#### 関連アセットの検索 (Search related assets) {#search-related-assets} - -アセットが新しいバージョンで更新された場合、元のアセットから作成された(マテリアルやテクスチャなどの)関連アセットを検索します。それ以外の場合は、関連アセットを現在のフォルダ内だけでチェックします。 - -#### モデルの上書き (Overwrite Model) {#overwrite-model} - -シーン(例:FBX)をインポートすると、この設定によってモデルファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 - -#### アニメーションの上書き (Overwrite Animation) {#overwrite-animation} - -シーン(例:FBX)をインポートすると、この設定によってアニメーションファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 - -#### マテリアルの上書き (Overwrite Material) {#overwrite-material} - -シーン(例:FBX)をインポートすると、この設定によってマテリアルファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 - -#### テクスチャの上書き (Overwrite Texture) {#overwrite-texture} - -シーン(例:FBX)をインポートすると、この設定によってテクスチャファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 - -[1]: /user-manual/editor/toolbar -[2]: /images/user-manual/editor/settings/cog.jpg -[3]: /user-manual/assets/types/cubemap -[4]: /images/user-manual/editor/settings/gamma-correction.jpg -[5]: https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear -[6]: /user-manual/editor/launch-page/loading-screen -[7]: /user-manual/scenes/components/model -[8]: /user-manual/scenes/components/element -[9]: /user-manual/graphics/advanced-rendering/batching -[10]: /user-manual/graphics/layers/ -[11]: /user-manual/user-interface/localization -[12]: /images/user-manual/editor/settings/lightmapping-settings.png -[13]: /user-manual/graphics/lighting/runtime-lightmaps/#soft-directional-light -[14]: /user-manual/graphics/lighting/runtime-lightmaps/#baking-an-environment-light -[15]: /user-manual/graphics/lighting/runtime-lightmaps +Here is a breakdown of the available settings: +| Setting | 説明 | +| -------------------------------- | ----------- | +| **Grid Divisions** | Determines the number of divisions in the grid in the [Viewport](viewport.md). | +| **Grid Division Size** | Sets the size of each grid division, affecting the grid scale. | +| **Snap** | Sets the snap increment when using the [gizmos](viewport.md#gizmos) in the [Viewport](viewport.md). Useful for precise positioning. | +| **Camera Clip Near** | Sets the near clipping plane for all Editor cameras in the [Viewport](viewport.md). | +| **Camera Clip Far** | Sets the far clipping plane for all Editor cameras in the [Viewport](viewport.md). | +| **Camera Depth Grabpass** | Configures the camera to capture depth information for special effects. | +| **Camera Color Grabpass** | Configures the camera to capture color information for special effects. | +| **Zoom Sensitivity** | Adjusts the sensitivity of zooming in the [Viewport](viewport.md). | +| **Clear Color** | Sets the clear color for all Editor cameras in the [Viewport](viewport.md). | +| **Show Fog** | Toggles the visibility of fog in the [Viewport](viewport.md), even if it is enabled in the Scene Settings. | +| **Icons Size** | Changes the size of entity icons in the [Viewport](viewport.md). | +| **Engine Version** | The engine version to use in the [Launch Page](launch-page/index.md) or when [publishing a build](../publishing/web/playcanvas-hosting.md#publishing-a-new-build). Defaults to the current [stable release](https://github.com/playcanvas/engine/releases) of the PlayCanvas Engine. This setting only persists for the current session. | +| **Locale** | Sets the locale used by the [localization system](../user-interface/localization.md) for display in the [Viewport](viewport.md). | +| **Chat Notifications** | Toggles browser notifications for the Editor's built-in realtime chat. | +| **Rename Duplicated Entities** | If enabled, duplicated entity names get an incremental number added to the end. This helps to ensure unique naming of entities. | diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/viewport.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/viewport.md index 2dc04e74db..5d5d683712 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/viewport.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/viewport.md @@ -7,7 +7,7 @@ sidebar_position: 4 ビューポートは現在レンダリングされているシーンを表示します。エディタの現在のカメラを操作して、自由にシーン内を移動できます。 -## カメラ (Cameras) +## カメラ (Cameras) {#cameras} エディタは最初に **Perspective** (透視投影) カメラを使用するように設定されています。このカメラは、シーン内に浮かんでいるかのように見えます。カメラドロップダウンメニューを使用して、他のさまざまなカメラを使用してシーンを表示できます。 @@ -17,13 +17,13 @@ sidebar_position: 4 また、カメラメニューを使用して、シーン内の任意のカメラエンティティを選択することもできます。これにより、ゲーム内カメラを必要な位置に正確に配置できます。 -## ギズモ (Gizmo) +## ギズモ (Gizmo) {#gizmos} ![Gizmos][3] スクリーンショットで見ることができる3色の軸は、[ギズモ][4]と呼ばれます。これは、選択したエンティティの変換行列を操作するために使用されます。ギズモには3つの種類があります。矢印が軸の端にある「移動」、色付きの円がある「回転」、軸の端にキューブがある「拡大縮小」です。 -## 描画モード (Render Mode) +## Render Mode {#render-mode} You can modify the viewport render mode using this drop-down menu in the top-right of the viewport: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/faq.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/faq.md index 237e0ef302..0d3b769938 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/faq.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/faq.md @@ -105,7 +105,7 @@ JavaScriptを使用してエンティティの動作を制御できます。 エ シーンにスカイボックスを作成するには、まず[Cubemapアセット](/user-manual/assets/types/cubemap/)を作成する必要があります。その後、Cubemapを3Dビューポートにドラッグアンドドロップするか、Scene Settingsに移動してSkyboxフィールドにCubemapをドラッグします。 -[詳細を見る](/user-manual/editor/settings/#skybox) +[詳細を見る](/user-manual/scenes/settings#skybox) @@ -186,7 +186,7 @@ Translate / Rotate / Scaleツールを切り替えるには、それぞれ1/2/3 Entityに物理特性を与えるには、 [Collision component](/user-manual/scenes/components/collision/) と [RigidBody component](/user-manual/scenes/components/rigidbody/) を追加する必要があります。Collision componentはEntityに物理的な形状を与え、RigidBody componentはEntityを物理エンジンでシミュレーションします。 -デフォルトの [gravity](/user-manual/editor/settings/#gravity) を変更することができます。 +デフォルトの [gravity](/user-manual/scenes/settings#gravity) を変更することができます。 [チュートリアルを見る](/tutorials/collision-and-triggers/) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/advanced-rendering/batching.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/advanced-rendering/batching.md index 94877bef72..da1f02357b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/advanced-rendering/batching.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/advanced-rendering/batching.md @@ -91,7 +91,7 @@ if (element.batchGroupId) [3]: /images/user-manual/optimization/batching/western-scene.jpg [4]: /images/user-manual/optimization/batching/western-animation-all.gif [5]: /images/user-manual/optimization/batching/western-animation.gif -[6]: /user-manual/editor/settings/#batch-groups +[6]: /user-manual/scenes/settings#batch-groups [7]: /user-manual/scenes/components/model [8]: https://api.playcanvas.com/classes/Engine.BatchManager.html [9]: /user-manual/scenes/components/sprite diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/lighting/runtime-lightmaps.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/lighting/runtime-lightmaps.md index a169fb8411..6bb695a257 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/lighting/runtime-lightmaps.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/graphics/lighting/runtime-lightmaps.md @@ -155,9 +155,9 @@ Soft Directional Lightや環境ライトのベイキングの場合、ベイク [11]: /user-manual/graphics/advanced-rendering/batching [12]: /images/user-manual/graphics/lighting/lightmapping/editor-directional-light.png [13]: /images/user-manual/graphics/lighting/lightmapping/shadows-hard-soft.png -[14]: /user-manual/editor/settings/#ambient-color -[15]: /user-manual/editor/settings/#skybox -[16]: /user-manual/editor/settings/#lightmapping +[14]: /user-manual/scenes/settings#ambient-color +[15]: /user-manual/scenes/settings#skybox +[16]: /user-manual/scenes/settings#lightmapping [17]: /images/user-manual/graphics/lighting/lightmapping/lightmapping-settings-ambient-bake.png [18]: /images/user-manual/graphics/lighting/lightmapping/ambient-color.png [19]: /images/user-manual/graphics/lighting/lightmapping/lightmap-15-samples.png diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/publishing/web/playcanvas-hosting.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/publishing/web/playcanvas-hosting.md index 3a1999a168..76f57f7285 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/publishing/web/playcanvas-hosting.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/publishing/web/playcanvas-hosting.md @@ -12,7 +12,7 @@ PlayCanvasに公開するには、2つの単純な手順が必要です。 公開するにはプロジェクトに最低ひとつのシーンが必要です。 -## 新規ビルドの公開 +## 新規ビルドの公開 {#publishing-a-new-build} * プロジェクトに移行してEditorを開く。 * 左側のツールバーのボタンをクリックするか左上メニューからPublishingをクリック。 @@ -48,7 +48,7 @@ PlayCanvasに公開するには、2つの単純な手順が必要です。 ビルドは次の形式で永久的リンクを与えられます: `https://playcanv.as/b/BUILD_ID/` 。このリンクはビルドを削除しない限り有効です。ゲームへのリンクを共有したい場合は、以下の公開されたプロジェクトリンクを使用することを推奨します。 -## 主ビルド(Primary Build)の選択 +## 主ビルド(Primary Build)の選択 {#selecting-a-primary-build} 同じポップアップでビルドをクリック。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/components/collision.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/components/collision.md index 686dd9665d..8661965db4 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/components/collision.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/components/collision.md @@ -32,7 +32,7 @@ Collisionコンポーネントは、コンポーネントパネルの右上に | Axis | Capsuleのみ。カプセルをエンティティのローカルスペースのX、Y、またはZ軸に整列させます。 | | Height | Capsuleのみ。カプセルの先端から先端までの高さです。 | | Radius | SphereとCapsuleのみ。球体またはカプセルの体の半径です。 | -| アセット (Asset) | Meshのみ。三角形ベースのコリジョンメッシュのソースとして使用されるModelアセット。 | +| アセット (Asset) | Mesh only. The [render asset](../../assets/types/render.md) or model asset that will be used as a source for the triangle-based collision mesh. | ## スクリプトインターフェース diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/index.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/index.md index e39e94ea33..de84d5aeb3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/index.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/index.md @@ -10,41 +10,27 @@ sidebar_position: 9 これらはPlayCanvasエディターで編集されます。 -![][scene-list-png] +![](/images/user-manual/scenes/scene-list.png) ## シーンヒエラルキー -**シーンヒエラルキー** は、[エンティティ][entities]のグラフで、これらのエンティティには、世界にレンダリングするメッシュを持つか、サウンドエフェクトを再生するなどの振る舞いを付与する[コンポーネント][components]を持つことができます。また、[スクリプト][scripts]を使用してカスタムの振る舞いを付与することもできます。 +The **Scene Hierarchy** is a graph of [Entities](entities) that can have [Components](components) to give these Entities behaviors such as having a mesh to render in the world or to play sound effects. They can also be given custom behavior with [scripts](../scripting). ## シーン設定 (Scene Settings) -**シーン設定**には、シーンに関するグローバルなレンダリングや物理情報、およびシーンに関するプロパティなどが含まれます。これらは、Editor内の[プロジェクト設定][project-settings]で編集できます。 +**Scene Settings** contain global rendering and physics information and properties about the scene. These can be edited in the project [settings](settings) within the Editor. シーン設定の一覧: -* [Physics gravity][settings-gravity] (1) -* [Global ambient color][settings-ambient] (2) -* [Skybox][settings-skybox] (3) -* [Tonemapping][settings-tonemapping] (4) -* [Exposure][settings-exposure] (5) -* [Gamma Correction][settings-gamma] (6) -* [Fog][settings-fog] (7) -* [Lightmap properties][settings-lightmap] (8) +* [Physics gravity](settings#gravity) (1) +* [Global ambient color](settings#ambient-color) (2) +* [Skybox](settings#skybox) (3) +* [Tonemapping](settings#tonemapping) (4) +* [Exposure](settings#exposure) (5) +* [Gamma Correction](settings#gamma-correction) (6) +* [Fog](settings#fog) (7) +* [Lightmap properties](settings#lightmapping) (8) - -[components]: /user-manual/scenes/entities/ -[scripts]: /user-manual/scenes/components/ -[entities]: /user-manual/scripting/ -[scene-list-png]: /images/user-manual/scenes/scene-list.png -[project-settings]: /user-manual/editor/settings/ -[settings-gravity]: /user-manual/editor/settings/#gravity -[settings-ambient]: /user-manual/editor/settings/#ambient-color -[settings-skybox]: /user-manual/editor/settings/#skybox -[settings-tonemapping]: /user-manual/editor/settings/#tonemapping -[settings-exposure]: /user-manual/editor/settings/#exposure -[settings-gamma]: /user-manual/editor/settings/#gamma-correction -[settings-fog]: /user-manual/editor/settings/#fog -[settings-lightmap]: /user-manual/editor/settings/#lightmapping diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/loading-scenes.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/loading-scenes.md index a11c58c2e7..c568a2c9e8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/loading-scenes.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/loading-scenes.md @@ -1,10 +1,8 @@ --- title: シーンのロード -sidebar_position: 3 +sidebar_position: 4 --- -## イントロダクション - このページでは、コードを使用してシーンを読み込む方法と、プロジェクトでシーンを使用する異なるアプローチについて説明します。 シーンを使用するには、大きく2つのアプローチがあります。1つはシーンを完全に切り替える方法、もう1つはシーンを加算的に読み込む方法です。 @@ -21,7 +19,7 @@ sidebar_position: 3 This is done by simply calling [`SceneRegistry.changeScene`][changescene-api] with the name of the scene. -``` +```javascript this.app.scenes.changeScene('Some Scene Name'); ``` @@ -34,7 +32,7 @@ If the scene data is not already loaded, this function will: If you want to know when the scene is loaded or if there are errors, you will need to provide a callback: -``` +```javascript this.app.scenes.changeScene('Some Scene Name', (err, loadedSceneRootEntity) { if (err) { console.error(err); @@ -87,7 +85,7 @@ Sometimes developers use this approach to ensure that certain code and entities 以下は、シーンヒエラルキーや設定をロードするためのコード例です。 -``` +```javascript // シーンの名前で Scene Registry Item を検索する var sceneItem = this.app.scenes.find('Some Scene Name'); @@ -134,7 +132,7 @@ this.app.scenes.loadSceneSettings(sceneItem, function (err) { 現在ロードされているシーンヒエラルキーが破棄され、新しいシーンのロードと作成が行われる前に、明確な手順で現在ロードされているシーンが破棄されます。 -``` +```javascript // シーンの名前で Scene Registry Item を検索する var sceneItem = this.app.scenes.find('Some Scene Name'); @@ -160,7 +158,7 @@ this.app.scenes.loadSceneHierarchy(sceneItem, function (err, loadedSceneRootEnti このコードでは、新しいシーンヒエラルキーがヒエラルキーに追加された後に、古いシーンヒエラルキーがコールバックで破棄されるため、ネットワークからシーンデータがロードされる間は、古いシーンが存在します。 -``` +```javascript // シーン名でシーンレジストリアイテムを検索する var sceneItem = this.app.scenes.find('Some Scene Name'); diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/scenes.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/managing-scenes.md similarity index 81% rename from i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/scenes.md rename to i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/managing-scenes.md index 00da462180..baf1a1d38c 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/editor/scenes.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/managing-scenes.md @@ -1,10 +1,8 @@ --- -title: Scenes -sidebar_position: 9 +title: Managing Scenes +sidebar_position: 3 --- -## Scenes - シーンの管理は、シーンダイアログを開いて行うことができます。 シーンダイアログは、メニューの 'Scene' メニューオプションをクリックするか、 @@ -21,6 +19,6 @@ sidebar_position: 9 "ADD NEW SCENE" をクリックすると新しいシーンを作成できます。シーンをクリックすると開くことができ、各シーンの右側にあるボタンをクリックしてシーンを複製したり削除したりすることができます。また、左側のバナーアイコンをクリックして、アプリを公開するときやプロジェクトをエクスポートするときに最初に読み込まれるシーンにすることもできます。これをアプリケーションの最初の「レベル」と考えてください。 -[1]: /images/user-manual/editor/scenes-menu.jpg -[2]: /images/user-manual/editor/scenes-viewport.jpg -[3]: /images/user-manual/editor/scenes.jpg +[1]: /images/user-manual/scenes/managing-scenes/scenes-menu.jpg +[2]: /images/user-manual/scenes/managing-scenes/scenes-viewport.jpg +[3]: /images/user-manual/scenes/managing-scenes/scenes.jpg diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/settings.md b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/settings.md new file mode 100644 index 0000000000..9a7c2a5352 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/user-manual/scenes/settings.md @@ -0,0 +1,258 @@ +--- +title: シーン設定 (Scene Settings) +sidebar_position: 5 +--- + +設定パネル (SETTINGS) を使用すると、さまざまなプロパティを設定できます。エディターの左下にある`cog`ボタン([ツールバー][1])を使用してアクセスできます。 + +![Cog][2] + +## 物理設定 (Physics Settings) {#physics-settings} + +物理設定は、シーン内のすべてのRigidBodyコンポーネントのシミュレーションに影響します。 + +#### 有効化 (Enable) {#enable} + +3D物理ライブラリがアプリケーションに含まれる場合は、有効にしてください。 + +#### 重力 (Gravity) {#gravity} + +重力は、シーン内のすべての剛体にフレームごとに適用される加速度です。デフォルトでは、1秒間あたり約9.8メートルの速度で近似的に地球の重力を表します。宇宙でゲームを作成している場合は、これを0, 0, 0(ゼロG)に設定することができます。 + +## レンダリング (Rendering) {#rendering} + +レンダリング設定は、さまざまなグラフィックス関連のプロパティに影響を与えます。 + +#### アンビエントカラー (Ambient Color) {#ambient-color} + +シーンの環境光源の色です。PlayCanvasでは、方向性、点、スポットライトを作成できます。これらのライトは、オブジェクトに落ちる直接光を考慮しています。しかし、現実では、光は環境中を反射し、これを間接光と呼びます。グローバル環境光はこれをおおまかに近似し、すべての方向から輝くように見える光源を設定できます。グローバル環境色は、Phongマテリアルの環境プロパティと乗算され、オブジェクトの最終色に寄与します。 + +Skyboxと物理マテリアルを使用している場合、アンビエントカラーには影響がありません。 + +#### スカイボックス (Skybox) {#skybox} + +Skyboxは、3Dシーンの背後にレンダリングされる[cubemap][3]アセットです。これにより、シーン内の3Dモデルを超えた遠くの世界を表示するために6つの2D画像セットを使用できます。 + +Skyboxを追加するには、cubemapアセットを作成して、設定パネルのcubemapスロットに割り当てます。 + +Prefiltered Cubemapを使用している場合、skyboxはPhysical materialsのデフォルトの環境マップとして使用されます。 + +#### スカイボックスの強度 (Skybox Intensity) {#skybox-intensity} + +これは、skyboxの強度または明るさを制御するスライダーです。値は0(完全に黒)から32(最も明るい)までの範囲になります。 + +#### Skybox Mip {#skybox-mip} + +Prefiltered Skyboxを使用する場合、表示するskybox mipを選択できます。各mipは、元のSkyboxのよりぼやけたバージョンです。これを使用して、元のSkyboxのよりぼやけた/抽象的なバージョンを表示することができます。 + +#### トーンマッピング (Tonemapping) {#tonemapping} + +トーンマッピングは、High Dynamic Range(HDR)カラーを限られたLow Dynamic Range(例えば、可視モニター出力値)に圧縮するプロセスです。トーンマッピングには2つのオプションがあります。 + +* **Linear:** HDRカラーを露光で単純にスケーリングします。 +* **Filmic:** より洗練された曲線で、明るすぎるスポットを柔らかくするのに適していますが、暗いシェードも保存します。 + +Linearのトーンマッピングはデフォルトで有効になっており、シンプルにcolor * 露出 (exposure) になります。明るさを素早く変更するには露出を調整できます。入力がHDRであるため、これはPhotoshopのような単純な明るさではありません。たとえば、強度 (intensity) = 8の光源がある場合、露出= 0.5の場合でもかなり明るく(4)なります。すべての目に見えるものは直線的にフェードアウトするだけではありません。 + +Filmicのトーンマッピングは、明るい太陽で照らされたシーンや、壁/天井に近い明るい光があるインテリアなど、高コントラストな環境で良い選択肢です。範囲外の超明るい値を何かより知覚的に現実的なものにきれいにリマップします(私たちの目とフィルムもトーンマッピングを行います、物理的に線形の値を見るわけではありません)。写真家に聞いてみてください。誰もが、非常に明るいスポットと真っ暗なスポットを写真に残したくありません。フィルム風のトーンマッピングにより、そのようなスポットを取り除く素晴らしい機能が提供されます。 + +#### 露出 (Exposure) {#exposure} + +露出値はシーン全体の明るさを微調整します。 + +#### ガンマ補正 (Gamma Correction) {#gamma-correction} + +コンピュータのスクリーンは、物理的には線形ではなく知覚的に線形 (sRGB) な信号を出力するように設定されています。しかし、照明計算を行う際に正しい外観を得るためには、カラーテクスチャを物理的に線形な空間に変換し、完全に照らされたイメージを再び sRGB に合わせる必要があります。ガンマ補正を有効にしてレンダリングすると、不格好で過度に飽和したハイライトの数を減らすことができ、照明後の色をより正確に保持することができます。一般的に、シーンでこれを有効にすることが推奨されます。以下の画像は球体がある単純なシーンで、左側がガンマ補正されたシーンで、右側が補正されていないシーンです。 + +![Gamma Correction][4] + +ガンマ補正についてもっと知りたい場合は、[このGPU Gemsの章][5]を読んでください。 + +#### フォグ (Fog) {#fog} + +Fog Type プロパティを使用して、シーンで環境フォグの近似を制御できます。以下は、フォグが有効になっている例です。 + +使用可能なタイプは以下の通りです。 + +* None - フォグが無効になっています +* Linear - フォグは、フォグの開始距離とフォグの終了距離の間で線形にフェードします。 +* Exp - フォグは、指数関数に従ってビューポジションからフェードインします。 +* Exp2 - フォグは、二乗の指数関数に従ってビューポジションからフェードインします。 + +#### Color {#color} + +フォグの色。この色は、フォグがフェードインするにつれて、表面の色に混ぜ込まれます。 + +#### 開始距離 (Start Distance) {#start-distance} + +フォグがフェードインし始めるビューポイントからのシーン単位での距離です。 + +#### 終了距離 (End Distance) {#end-distance} + +フォグが最大に達するビューポイントからのシーン単位での距離です。この距離を超えるオブジェクトは、フォグの色でレンダリングされます。 + +#### フォグ密度 (Fog Density) {#fog-density} + +フォグ密度は、ExpおよびExp2フォグタイプに対してフォグがフェードインする速度を制御します。大きな値はフォグがより速くフェードインするようになります。フォグ密度は正の数でなければなりません。 + +#### Resolution {#resolution} + +アプリケーションの幅と高さを制御します。解像度モードを以下のいずれかの値に設定することもできます。 + +* Auto - 解像度は常にキャンバスサイズと同じになります。 +* Fixed - 解像度は常に幅x高さのピクセルになります。 + +#### フィルモード (Fill Mode) {#fill-mode} + +フィルモードは、キャンバスのサイズ調整の動作を制御します。以下の値のいずれかを設定できます。 + +* None - キャンバスは解像度の幅と高さと同じサイズになります。 +* Keep aspect Ratio - キャンバスは正しいアスペクト比を保持しながらウィンドウを拡大します。 +* Fill window - キャンバスはウィンドウを完全にフィルするようにストレッチされます。 + +#### デバイスピクセル比率 (DPI) {#device-pixel-ratio} + +キャンバスの解像度がデバイスピクセル比を含めて計算されるようになります。 + +#### 透明なキャンバス (Transparent Canvas) {#transparent-canvas} + +メインのcanvas要素でアルファブレンディングを有効にします。 + +#### 描画バッファの保持 (Preserve Drawing Buffer) {#preserve-drawing-buffer} + +WebGLコンテキストを作成する際、preserveDrawingBufferオプションを使用します。 + +## レイヤーの一覧 (Layers) {#layers} + +レンダリングレイヤーとその描画順序を管理します。レイヤーについての詳細は[こちら][10]を参照してください。 + +## オーディオ (Audio) {#audio} + +#### レガシーオーディオの使用 (Use Legacy Audio) {#use-legacy-audio} + +レガシーオーディオコンポーネントを有効にします。これは廃止された古いプロジェクトとの互換性のためにのみ使用してください。 + +## ライトマッピング (Lightmapping) {#lightmapping} + +![Lightmapping Settings][12] + +#### サイズの乗数 (Size Multiplier) {#size-multiplier} + +すべてのライトマップサイズに適用されるシーン全体の乗数。 + +#### 最大解像度 (Max Resolution) {#max-resolution} + +生成されたライトマップテクスチャに使用可能な最大テクスチャサイズ。 + +#### モード (Mode) {#mode} + +シーン全体のライトマップの焼き込みに使用されるモードで、次のオプションがあります。 +- **Color Only** - HDRカラーを含む単一のライトマップを焼き込みます。 +- **Color and Direction** - 主要なライト方向を含む2番目のライトマップを焼き込みます。Specular Lightingを使用することができます。Color and Directionモードは、[Soft Directional Light][13]または[Environment Light][14]のベイクとは互換性がありません + +#### フィルター (Filter) {#filter} + +[Runtime Baked Lightmaps][15](ランタイムベイクドライトマップ)に対してバイラテラルフィルタを有効にします。 + +#### Range {#range} + +バイラテラルフィルタの範囲パラメータ。大きい値ほど広範囲のぼかしが適用されます。 + +#### 滑らかさ (Smoothness) {#smoothness} + +バイラテラルフィルタの空間パラメータです。大きな値を設定すると、色の類似性が低いものほどぼかされます。 + +#### Ambient Bake (アンビエントベイク) {#ambient-bake} + +[Environment Light][14]の焼き込みを有効にします。 + +#### Samples (サンプル数) {#samples} + +環境光をライトマップにベイクするために使用されるサンプル数。 + +#### Sphere Part {#sphere-part} + +環境光をベイクするために使用される球の割合。 + +#### オクルージョンの明るさ (Occlusion Brightness) {#occlusion-brightness} + +ベイクされたアンビエントオクルージョンの明るさ。 + +#### オクルージョンコントラスト (Occlusion Contrast) {#occlusion-contrast} + +ベイクされたアンビエントオクルージョンのコントラスト。 + +## バッチグループ {#batch-groups} + +プロジェクトのバッチグループを作成・管理することができます。[Model][7]コンポーネントや[Element][8]コンポーネントをバッチグループに割り当てることができ、同じグループ内のオブジェクトのメッシュインスタンスを結合して描画コールを減らすようにエンジンが試みます。バッチ処理については[こちら][9]を参照してください。 + +## ローディングスクリーン {#loading-screen-available-for-org-users-only} + +アプリケーションのローディング画面を作成するスクリプトを設定できます。新しいローディングスクリーンスクリプトを作成するには、*Create Default*をクリックしてください。カスタムローディングスクリーンに関する詳細は[こちら][6]を参照してください。 + +## 外部スクリプト (External Scripts) {#external-scripts} + +アプリケーションに含めたい外部スクリプトのURLを指定できます。これらのURLは、他のスクリプトがロードされる前にアプリケーションのメインHTMLページに<script>タグとして追加されます。 + +## Input {#input} + +アプリケーションで使用する入力デバイスを有効または無効にできます。 + +## ローカライゼーション (Localization) {#localization} + +ローカライズデータを含むJSONアセットを指定できます。このリストにあるアセットは、ロードされると自動的にローカライズデータを解析します。これらは、テキストエレメントをローカライズするために使用されます。 + +新しいローカライズアセットを作成するには、CREATE NEW ASSETをクリックしてください。そのアセットに対して、必要なロケールのデータを追加することができます。 + +ローカライズについての詳細は[こちら][11]を参照してください。 + +## アセットタスク (Asset Tasks) {#asset-tasks} + +#### Auto-run {#auto-run} + +アセットがアップロードされると、アセットパイプラインを自動的に実行します。 + +#### Textures POT (power-of-two) (テクスチャの2の累乗リサイズ) {#textures-pot-power-of-two} + +テクスチャがインポートされると、最も近い2の累乗にリサイズします。 + +#### アトラスを作成 (Create Atlases) {#create-atlases} + +新しい画像がアップロードされると、テクスチャの代わりにテクスチャアトラスが作成されます。 + +#### 関連アセットの検索 (Search related assets) {#search-related-assets} + +アセットが新しいバージョンで更新された場合、元のアセットから作成された(マテリアルやテクスチャなどの)関連アセットを検索します。それ以外の場合は、関連アセットを現在のフォルダ内だけでチェックします。 + +#### モデルの上書き (Overwrite Model) {#overwrite-model} + +シーン(例:FBX)をインポートすると、この設定によってモデルファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 + +#### アニメーションの上書き (Overwrite Animation) {#overwrite-animation} + +シーン(例:FBX)をインポートすると、この設定によってアニメーションファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 + +#### マテリアルの上書き (Overwrite Material) {#overwrite-material} + +シーン(例:FBX)をインポートすると、この設定によってマテリアルファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 + +#### テクスチャの上書き (Overwrite Texture) {#overwrite-texture} + +シーン(例:FBX)をインポートすると、この設定によってテクスチャファイルがシーンからインポートされた新しいバージョンで上書きされるかどうかが決まります。 + +[1]: /user-manual/editor/toolbar +[2]: /images/user-manual/scenes/settings/cog.jpg +[3]: /user-manual/assets/types/cubemap +[4]: /images/user-manual/scenes/settings/gamma-correction.jpg +[5]: https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear +[6]: /user-manual/editor/launch-page/loading-screen +[7]: /user-manual/scenes/components/model +[8]: /user-manual/scenes/components/element +[9]: /user-manual/graphics/advanced-rendering/batching +[10]: /user-manual/graphics/layers/ +[11]: /user-manual/user-interface/localization +[12]: /images/user-manual/scenes/settings/lightmapping-settings.png +[13]: /user-manual/graphics/lighting/runtime-lightmaps/#soft-directional-light +[14]: /user-manual/graphics/lighting/runtime-lightmaps/#baking-an-environment-light +[15]: /user-manual/graphics/lighting/runtime-lightmaps + diff --git a/static/images/user-manual/editor/settings/editor-settings.png b/static/images/user-manual/editor/settings/editor-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..15b765f3a9470df2f0836e69d66405a73bf2ca6d GIT binary patch literal 60687 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⁢ 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 dZFkLjd