A minimalist and declarative library encapsulating Svelte and Three js. 🔥
Made using Svelte Kit, it aims to provide an authentic, developer friendly experience similar to that of Svelte. ✨
To install simply install the library into an existing svelte project using npm install boxlte
Import the necessary components from either 'boxlte'
or 'boxlte/shapes'
<script>[README.md](README.md)
import { World } from 'boxlte'
import { Box } from 'boxlte/shapes'
<script/>
<World>
<Box/>
<World/>
Howerver, the box will not be visible as the camera is positioned at the center i.e. the same positon as the box, to see the box the cameraPosition
need to be changed.
<World cameraPosition={{ z : 5 }} >
<Box/>
</World>
Objects inside the world can be manipulated by various attributes such as position
, rotation
which work similar to normal svelte props, these values are essentialy objects most commonly having the same syntax throughout.
An example of a simple scene :
<script>
import { World, Light } from 'boxlte'
import { Plane, Box } from 'boxlte/shapes'
</script>
<World cameraPosition={{y: 2, z: 5}} centerFocus>
<Light position={{x: 1, y: 5, z: 4}} intensity={Math.PI * 13} spot/>
<Box color="deepskyblue" position={{y: 0.5}}/>
<Plane color="white" radius={3} rounded alignHorizontal noShadowCast />
</World>
Overview of the code:
The bind
propertiy bind the three values of a attribute to a same property all
.
The <Light/>
component has directional
, spot
and point
lights all baked into one which can be chosen by adding the property.
The color
property simply changes the color of the Standerd Material applied to the Mesh.
Plane components have properties such as alignHorizontal
, alignVertical
, and alignSideways
which makes it easy to rotate the plane as desired.
Plane exhibit undisireable behaviour when casting shadows (such as casting shadows onto itself) so it is recommanded to use no shadow casting on a plane. This can be achieved using the noShadowCast
property avialable to all components.