<Render/>
The <Render/> component allows an <Entity/> to display a 3D asset or primitive shape. Adding the <Render/> component to an <Entity/> will add a RenderComponent to the entity. The type prop allows you to select the primitive shape to render.
- Demo
- Code
render-box.jsx
import { Entity } from '@playcanvas/react'
import { Render } from '@playcanvas/react/components'
import { useState } from 'react';
export const RenderBox = () => {
const [shape, setShape] = useState('box');
const onSphereClick = () => setShape('sphere');
const onBoxClick = () => setShape('box');
return (<>
<Entity position={[0, 0, 0]}>
<Render type={shape} />
</Entity>
<div className="overlay">
<button data-selected={shape === 'sphere'} onClick={onSphereClick}>Sphere</button>
<button data-selected={shape === 'box'} onClick={onBoxClick}>Box</button>
</div>
</>
)
}
Rendering an Asset
To render a 3D model loaded from a URL, you can use the asset type and pass the asset directly to the asset prop. You can learn more about loading assets in the loading assets guide.
import { Render } from '@playcanvas/react/components'
import { useModel } from '@playcanvas/react/hooks'
const RenderModel = () => {
const { asset } = useModel('model.glb')
if (!asset) return null
return <Entity>
<Render type="asset" asset={asset} />
</Entity>
}
Learn more about the Render Component in the PlayCanvas documentation.
Properties
| Name | Type | Default |
|---|---|---|
type | "asset" | "box" | "capsule" | "cone" | "cylinder" | "plane" | "sphere" | "torus"The type of primitive shape to render. | "box" |
asset? | AssetThe asset to render. | - |
children? | ReactNode | - |
isStatic? | booleanMark meshes as non-movable (optimization). | - |
renderStyle? | numberSets the render style of this component's MeshInstances. Can be:
- RENDERSTYLE_SOLID
- RENDERSTYLE_WIREFRAME
- RENDERSTYLE_POINTS
Defaults to RENDERSTYLE_SOLID.
Gets the render style of this component's MeshInstances. | - |
customAabb? | BoundingBox | nullSets the custom object space bounding box that is used for visibility culling of attached
mesh instances. This is an optimization, allowing an oversized bounding box to be specified
for skinned characters in order to avoid per frame bounding box computations based on bone
positions.
Gets the custom object space bounding box that is used for visibility culling of attached
mesh instances. | - |
meshInstances? | MeshInstance[]Sets the array of meshInstances contained in the component.
Gets the array of meshInstances contained in the component. | - |
lightmapped? | booleanSets whether the component is affected by the runtime lightmapper. If true, the meshes will
be lightmapped after using lightmapper.bake().
Gets whether the component is affected by the runtime lightmapper. | - |
castShadows? | booleanSets whether attached meshes will cast shadows for lights that have shadow casting enabled.
Gets whether attached meshes will cast shadows for lights that have shadow casting enabled. | - |
receiveShadows? | booleanSets whether shadows will be cast on attached meshes.
Gets whether shadows will be cast on attached meshes. | - |
castShadowsLightmap? | booleanSets whether meshes instances will cast shadows when rendering lightmaps.
Gets whether meshes instances will cast shadows when rendering lightmaps. | - |
lightmapSizeMultiplier? | numberSets the lightmap resolution multiplier.
Gets the lightmap resolution multiplier. | - |
layers? | number[]Sets the array of layer IDs (Layer#id ) to which the mesh instances belong. Don't
push, pop, splice or modify this array. If you want to change it, set a new one instead.
Gets the array of layer IDs (Layer#id ) to which the mesh instances belong. | - |
batchGroupId? | numberSets the batch group for the mesh instances in this component (see BatchGroup).
Default is -1 (no group).
Gets the batch group for the mesh instances in this component (see BatchGroup). | - |
material? | MaterialSets the material Material that will be used to render the component. The material
is ignored for renders of type 'asset'.
Gets the material Material that will be used to render the component. | - |
materialAssets? | number[] | Asset[]Sets the material assets that will be used to render the component. Each material
corresponds to the respective mesh instance.
Gets the material assets that will be used to render the component. | - |
rootBone? | Entity | nullSets the root bone entity (or entity guid) for the render component.
Gets the root bone entity for the render component. | - |
materialAsset? | any | - |
system? | ComponentSystemThe ComponentSystem used to create this Component. | - |
entity? | EntityThe Entity that this Component is attached to. | - |
enabled? | booleanSets the enabled state of the component.
Gets the enabled state of the component. | - |