parent
73249cd6a7
commit
34169cc0d8
Binary file not shown.
Binary file not shown.
@ -0,0 +1,46 @@
|
||||
import React from 'react'
|
||||
import { Text } from '@react-three/drei'
|
||||
|
||||
interface IObraData {
|
||||
full_name: string
|
||||
alumne_url: string
|
||||
obra_url: string
|
||||
guest: boolean
|
||||
obra_titulo: string
|
||||
obra_descripcion: string
|
||||
}
|
||||
|
||||
type ArtworkProps = {
|
||||
position: number[]
|
||||
rotation: number[]
|
||||
model: JSX.Element | null
|
||||
obraData: IObraData
|
||||
}
|
||||
|
||||
const Artwork: React.FC<ArtworkProps & JSX.IntrinsicElements['group']> = ({
|
||||
position,
|
||||
rotation,
|
||||
model,
|
||||
obraData,
|
||||
...rest
|
||||
}) => {
|
||||
return (
|
||||
<group rotation={rotation}>
|
||||
<group position={position} {...rest}>
|
||||
<Text
|
||||
position={[0, 8.2, 1.5]}
|
||||
color="white"
|
||||
fontSize={0.7}
|
||||
font="https://fonts.gstatic.com/s/raleway/v14/1Ptrg8zYS_SKggPNwK4vaqI.woff"
|
||||
anchorX="center"
|
||||
anchorY="middle"
|
||||
>
|
||||
{obraData.obra_titulo}
|
||||
</Text>
|
||||
{model ?? null}
|
||||
</group>
|
||||
</group>
|
||||
)
|
||||
}
|
||||
|
||||
export default Artwork
|
@ -0,0 +1,26 @@
|
||||
import React from 'react'
|
||||
|
||||
import Artwork from './Artwork'
|
||||
import data from '../data/obras.json'
|
||||
|
||||
function ArtworkCollection(props: JSX.IntrinsicElements['group']) {
|
||||
return (
|
||||
<group {...props}>
|
||||
{data.map((obra, index) => {
|
||||
let rotation = Math.PI / 8 + (index * Math.PI) / 8
|
||||
if (index > 6) rotation += Math.PI / 8
|
||||
return (
|
||||
<Artwork
|
||||
model={null}
|
||||
key={obra.obra_url}
|
||||
rotation={[0, rotation, 0]}
|
||||
position={[0, 0, -37.8632]}
|
||||
obraData={obra}
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</group>
|
||||
)
|
||||
}
|
||||
|
||||
export default ArtworkCollection
|
Loading…
Reference in new issue