floating-islands.ts 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940
  1. import { PI } from "./_helpers";
  2. import type { Scene } from "./_helpers";
  3. export const floatingIslands: Scene = {
  4. name: "Floating Islands",
  5. description:
  6. "Sky, clouds, islands with trees and bridges floating in sunset light",
  7. spec: {
  8. root: "scene",
  9. elements: {
  10. scene: {
  11. type: "Group",
  12. props: { position: null, rotation: null, scale: null },
  13. children: [
  14. "cam",
  15. "sky",
  16. "ambient",
  17. "sun",
  18. "clouds",
  19. "island-main-float",
  20. "island-left-float",
  21. "island-right-float",
  22. "island-far-float",
  23. "island-tiny1-float",
  24. "island-tiny2-float",
  25. "bridge-1",
  26. "bridge-2",
  27. "sparkles",
  28. "controls",
  29. ],
  30. },
  31. cam: {
  32. type: "PerspectiveCamera",
  33. props: {
  34. position: [8, 6, 14],
  35. rotation: null,
  36. scale: null,
  37. fov: 50,
  38. near: 0.1,
  39. far: 500,
  40. makeDefault: true,
  41. },
  42. children: [],
  43. },
  44. sky: {
  45. type: "Environment",
  46. props: {
  47. preset: "dawn",
  48. background: true,
  49. blur: 0.8,
  50. intensity: 0.5,
  51. },
  52. children: [],
  53. },
  54. ambient: {
  55. type: "AmbientLight",
  56. props: { color: "#ffd4a0", intensity: 0.5 },
  57. children: [],
  58. },
  59. sun: {
  60. type: "DirectionalLight",
  61. props: {
  62. position: [8, 12, 6],
  63. rotation: null,
  64. scale: null,
  65. color: "#ffcc88",
  66. intensity: 2.5,
  67. castShadow: true,
  68. },
  69. children: [],
  70. },
  71. clouds: {
  72. type: "Cloud",
  73. props: {
  74. position: [0, 4, -8],
  75. rotation: null,
  76. scale: null,
  77. seed: 7,
  78. segments: 40,
  79. bounds: [25, 3, 20],
  80. volume: 10,
  81. speed: 0.1,
  82. fade: 25,
  83. opacity: 0.6,
  84. color: "#ffe8d0",
  85. growth: 8,
  86. },
  87. children: [],
  88. },
  89. "island-main-float": {
  90. type: "Float",
  91. props: {
  92. position: [0, 0, 0],
  93. rotation: null,
  94. scale: null,
  95. speed: 0.4,
  96. rotationIntensity: 0.02,
  97. floatIntensity: 0.3,
  98. enabled: true,
  99. },
  100. children: ["island-main"],
  101. },
  102. "island-main": {
  103. type: "Group",
  104. props: { position: null, rotation: null, scale: null },
  105. children: [
  106. "main-base",
  107. "main-top",
  108. "main-underhang",
  109. "tree-1-trunk",
  110. "tree-1-canopy",
  111. "tree-2-trunk",
  112. "tree-2-canopy",
  113. "tree-3-trunk",
  114. "tree-3-canopy",
  115. "house-base",
  116. "house-roof",
  117. ],
  118. },
  119. "main-base": {
  120. type: "Cylinder",
  121. props: {
  122. position: [0, -0.5, 0],
  123. rotation: null,
  124. scale: null,
  125. castShadow: true,
  126. receiveShadow: true,
  127. material: {
  128. color: "#8B6914",
  129. metalness: 0.1,
  130. roughness: 0.9,
  131. emissive: null,
  132. emissiveIntensity: null,
  133. opacity: null,
  134. transparent: null,
  135. wireframe: null,
  136. },
  137. radiusTop: 3,
  138. radiusBottom: 1.5,
  139. height: 2,
  140. radialSegments: 16,
  141. },
  142. children: [],
  143. },
  144. "main-top": {
  145. type: "Cylinder",
  146. props: {
  147. position: [0, 0.55, 0],
  148. rotation: null,
  149. scale: null,
  150. castShadow: true,
  151. receiveShadow: true,
  152. material: {
  153. color: "#4a8c3f",
  154. metalness: 0,
  155. roughness: 0.95,
  156. emissive: null,
  157. emissiveIntensity: null,
  158. opacity: null,
  159. transparent: null,
  160. wireframe: null,
  161. },
  162. radiusTop: 3.1,
  163. radiusBottom: 3,
  164. height: 0.3,
  165. radialSegments: 16,
  166. },
  167. children: [],
  168. },
  169. "main-underhang": {
  170. type: "Cone",
  171. props: {
  172. position: [0, -2.5, 0],
  173. rotation: [PI, 0, 0],
  174. scale: null,
  175. castShadow: true,
  176. receiveShadow: false,
  177. material: {
  178. color: "#6B4513",
  179. metalness: 0.1,
  180. roughness: 0.95,
  181. emissive: null,
  182. emissiveIntensity: null,
  183. opacity: null,
  184. transparent: null,
  185. wireframe: null,
  186. },
  187. radius: 1.5,
  188. height: 2.5,
  189. radialSegments: 12,
  190. },
  191. children: [],
  192. },
  193. "tree-1-trunk": {
  194. type: "Cylinder",
  195. props: {
  196. position: [1, 1, 0.5],
  197. rotation: null,
  198. scale: null,
  199. castShadow: true,
  200. receiveShadow: false,
  201. material: {
  202. color: "#8B5A2B",
  203. metalness: 0,
  204. roughness: 1,
  205. emissive: null,
  206. emissiveIntensity: null,
  207. opacity: null,
  208. transparent: null,
  209. wireframe: null,
  210. },
  211. radiusTop: 0.06,
  212. radiusBottom: 0.1,
  213. height: 1.5,
  214. radialSegments: 8,
  215. },
  216. children: [],
  217. },
  218. "tree-1-canopy": {
  219. type: "Sphere",
  220. props: {
  221. position: [1, 2.2, 0.5],
  222. rotation: null,
  223. scale: [1, 1.2, 1],
  224. castShadow: true,
  225. receiveShadow: false,
  226. material: {
  227. color: "#2d7a2d",
  228. metalness: 0,
  229. roughness: 0.95,
  230. emissive: null,
  231. emissiveIntensity: null,
  232. opacity: null,
  233. transparent: null,
  234. wireframe: null,
  235. },
  236. radius: 0.6,
  237. widthSegments: 16,
  238. heightSegments: 12,
  239. },
  240. children: [],
  241. },
  242. "tree-2-trunk": {
  243. type: "Cylinder",
  244. props: {
  245. position: [-1.2, 0.8, -0.8],
  246. rotation: null,
  247. scale: null,
  248. castShadow: true,
  249. receiveShadow: false,
  250. material: {
  251. color: "#8B5A2B",
  252. metalness: 0,
  253. roughness: 1,
  254. emissive: null,
  255. emissiveIntensity: null,
  256. opacity: null,
  257. transparent: null,
  258. wireframe: null,
  259. },
  260. radiusTop: 0.05,
  261. radiusBottom: 0.08,
  262. height: 1.1,
  263. radialSegments: 8,
  264. },
  265. children: [],
  266. },
  267. "tree-2-canopy": {
  268. type: "Sphere",
  269. props: {
  270. position: [-1.2, 1.7, -0.8],
  271. rotation: null,
  272. scale: [1, 1.3, 1],
  273. castShadow: true,
  274. receiveShadow: false,
  275. material: {
  276. color: "#3a8c3a",
  277. metalness: 0,
  278. roughness: 0.95,
  279. emissive: null,
  280. emissiveIntensity: null,
  281. opacity: null,
  282. transparent: null,
  283. wireframe: null,
  284. },
  285. radius: 0.45,
  286. widthSegments: 16,
  287. heightSegments: 12,
  288. },
  289. children: [],
  290. },
  291. "tree-3-trunk": {
  292. type: "Cylinder",
  293. props: {
  294. position: [-0.3, 1.2, 1.5],
  295. rotation: null,
  296. scale: null,
  297. castShadow: true,
  298. receiveShadow: false,
  299. material: {
  300. color: "#8B5A2B",
  301. metalness: 0,
  302. roughness: 1,
  303. emissive: null,
  304. emissiveIntensity: null,
  305. opacity: null,
  306. transparent: null,
  307. wireframe: null,
  308. },
  309. radiusTop: 0.07,
  310. radiusBottom: 0.12,
  311. height: 2,
  312. radialSegments: 8,
  313. },
  314. children: [],
  315. },
  316. "tree-3-canopy": {
  317. type: "Sphere",
  318. props: {
  319. position: [-0.3, 2.7, 1.5],
  320. rotation: null,
  321. scale: [1.2, 1.4, 1.2],
  322. castShadow: true,
  323. receiveShadow: false,
  324. material: {
  325. color: "#1a6b1a",
  326. metalness: 0,
  327. roughness: 0.95,
  328. emissive: null,
  329. emissiveIntensity: null,
  330. opacity: null,
  331. transparent: null,
  332. wireframe: null,
  333. },
  334. radius: 0.7,
  335. widthSegments: 16,
  336. heightSegments: 12,
  337. },
  338. children: [],
  339. },
  340. "house-base": {
  341. type: "RoundedBox",
  342. props: {
  343. position: [0, 0.9, -0.5],
  344. rotation: [0, 0.3, 0],
  345. scale: null,
  346. castShadow: true,
  347. receiveShadow: true,
  348. material: {
  349. color: "#e8d8c0",
  350. metalness: 0,
  351. roughness: 0.8,
  352. emissive: "#ffddaa",
  353. emissiveIntensity: 0.05,
  354. opacity: null,
  355. transparent: null,
  356. wireframe: null,
  357. },
  358. width: 0.8,
  359. height: 0.7,
  360. depth: 0.7,
  361. radius: 0.05,
  362. smoothness: 4,
  363. },
  364. children: [],
  365. },
  366. "house-roof": {
  367. type: "Cone",
  368. props: {
  369. position: [0, 1.55, -0.5],
  370. rotation: [0, 1.085, 0],
  371. scale: null,
  372. castShadow: true,
  373. receiveShadow: false,
  374. material: {
  375. color: "#a04030",
  376. metalness: 0.1,
  377. roughness: 0.8,
  378. emissive: null,
  379. emissiveIntensity: null,
  380. opacity: null,
  381. transparent: null,
  382. wireframe: null,
  383. },
  384. radius: 0.6,
  385. height: 0.5,
  386. radialSegments: 4,
  387. },
  388. children: [],
  389. },
  390. "island-left-float": {
  391. type: "Float",
  392. props: {
  393. position: [-6, 0.1, 2],
  394. rotation: null,
  395. scale: null,
  396. speed: 0.6,
  397. rotationIntensity: 0.03,
  398. floatIntensity: 0.5,
  399. enabled: true,
  400. },
  401. children: ["island-left"],
  402. },
  403. "island-left": {
  404. type: "Group",
  405. props: { position: null, rotation: null, scale: null },
  406. children: [
  407. "left-base",
  408. "left-top",
  409. "left-under",
  410. "left-tree-t",
  411. "left-tree-c",
  412. ],
  413. },
  414. "left-base": {
  415. type: "Cylinder",
  416. props: {
  417. position: [0, -0.3, 0],
  418. rotation: null,
  419. scale: null,
  420. castShadow: true,
  421. receiveShadow: true,
  422. material: {
  423. color: "#8B6914",
  424. metalness: 0.1,
  425. roughness: 0.9,
  426. emissive: null,
  427. emissiveIntensity: null,
  428. opacity: null,
  429. transparent: null,
  430. wireframe: null,
  431. },
  432. radiusTop: 1.8,
  433. radiusBottom: 0.8,
  434. height: 1.2,
  435. radialSegments: 12,
  436. },
  437. children: [],
  438. },
  439. "left-top": {
  440. type: "Cylinder",
  441. props: {
  442. position: [0, 0.25, 0],
  443. rotation: null,
  444. scale: null,
  445. castShadow: true,
  446. receiveShadow: true,
  447. material: {
  448. color: "#4a8c3f",
  449. metalness: 0,
  450. roughness: 0.95,
  451. emissive: null,
  452. emissiveIntensity: null,
  453. opacity: null,
  454. transparent: null,
  455. wireframe: null,
  456. },
  457. radiusTop: 1.85,
  458. radiusBottom: 1.8,
  459. height: 0.2,
  460. radialSegments: 12,
  461. },
  462. children: [],
  463. },
  464. "left-under": {
  465. type: "Cone",
  466. props: {
  467. position: [0, -1.5, 0],
  468. rotation: [PI, 0, 0],
  469. scale: null,
  470. castShadow: true,
  471. receiveShadow: false,
  472. material: {
  473. color: "#6B4513",
  474. metalness: 0.1,
  475. roughness: 0.95,
  476. emissive: null,
  477. emissiveIntensity: null,
  478. opacity: null,
  479. transparent: null,
  480. wireframe: null,
  481. },
  482. radius: 0.8,
  483. height: 1.5,
  484. radialSegments: 10,
  485. },
  486. children: [],
  487. },
  488. "left-tree-t": {
  489. type: "Cylinder",
  490. props: {
  491. position: [0.3, 0.8, 0],
  492. rotation: null,
  493. scale: null,
  494. castShadow: true,
  495. receiveShadow: false,
  496. material: {
  497. color: "#8B5A2B",
  498. metalness: 0,
  499. roughness: 1,
  500. emissive: null,
  501. emissiveIntensity: null,
  502. opacity: null,
  503. transparent: null,
  504. wireframe: null,
  505. },
  506. radiusTop: 0.04,
  507. radiusBottom: 0.07,
  508. height: 1,
  509. radialSegments: 8,
  510. },
  511. children: [],
  512. },
  513. "left-tree-c": {
  514. type: "Sphere",
  515. props: {
  516. position: [0.3, 1.6, 0],
  517. rotation: null,
  518. scale: [1, 1.2, 1],
  519. castShadow: true,
  520. receiveShadow: false,
  521. material: {
  522. color: "#2d7a2d",
  523. metalness: 0,
  524. roughness: 0.95,
  525. emissive: null,
  526. emissiveIntensity: null,
  527. opacity: null,
  528. transparent: null,
  529. wireframe: null,
  530. },
  531. radius: 0.4,
  532. widthSegments: 12,
  533. heightSegments: 8,
  534. },
  535. children: [],
  536. },
  537. "island-right-float": {
  538. type: "Float",
  539. props: {
  540. position: [5.5, 0, -3],
  541. rotation: null,
  542. scale: null,
  543. speed: 0.5,
  544. rotationIntensity: 0.02,
  545. floatIntensity: 0.4,
  546. enabled: true,
  547. },
  548. children: ["island-right"],
  549. },
  550. "island-right": {
  551. type: "Group",
  552. props: { position: null, rotation: null, scale: null },
  553. children: [
  554. "right-base",
  555. "right-top",
  556. "right-under",
  557. "right-tree-t",
  558. "right-tree-c",
  559. ],
  560. },
  561. "right-base": {
  562. type: "Cylinder",
  563. props: {
  564. position: [0, -0.3, 0],
  565. rotation: null,
  566. scale: null,
  567. castShadow: true,
  568. receiveShadow: true,
  569. material: {
  570. color: "#8B6914",
  571. metalness: 0.1,
  572. roughness: 0.9,
  573. emissive: null,
  574. emissiveIntensity: null,
  575. opacity: null,
  576. transparent: null,
  577. wireframe: null,
  578. },
  579. radiusTop: 2,
  580. radiusBottom: 1,
  581. height: 1.5,
  582. radialSegments: 12,
  583. },
  584. children: [],
  585. },
  586. "right-top": {
  587. type: "Cylinder",
  588. props: {
  589. position: [0, 0.4, 0],
  590. rotation: null,
  591. scale: null,
  592. castShadow: true,
  593. receiveShadow: true,
  594. material: {
  595. color: "#4a8c3f",
  596. metalness: 0,
  597. roughness: 0.95,
  598. emissive: null,
  599. emissiveIntensity: null,
  600. opacity: null,
  601. transparent: null,
  602. wireframe: null,
  603. },
  604. radiusTop: 2.05,
  605. radiusBottom: 2,
  606. height: 0.2,
  607. radialSegments: 12,
  608. },
  609. children: [],
  610. },
  611. "right-under": {
  612. type: "Cone",
  613. props: {
  614. position: [0, -2, 0],
  615. rotation: [PI, 0, 0],
  616. scale: null,
  617. castShadow: true,
  618. receiveShadow: false,
  619. material: {
  620. color: "#6B4513",
  621. metalness: 0.1,
  622. roughness: 0.95,
  623. emissive: null,
  624. emissiveIntensity: null,
  625. opacity: null,
  626. transparent: null,
  627. wireframe: null,
  628. },
  629. radius: 1,
  630. height: 2,
  631. radialSegments: 10,
  632. },
  633. children: [],
  634. },
  635. "right-tree-t": {
  636. type: "Cylinder",
  637. props: {
  638. position: [-0.5, 0.9, 0.3],
  639. rotation: null,
  640. scale: null,
  641. castShadow: true,
  642. receiveShadow: false,
  643. material: {
  644. color: "#8B5A2B",
  645. metalness: 0,
  646. roughness: 1,
  647. emissive: null,
  648. emissiveIntensity: null,
  649. opacity: null,
  650. transparent: null,
  651. wireframe: null,
  652. },
  653. radiusTop: 0.05,
  654. radiusBottom: 0.09,
  655. height: 1.3,
  656. radialSegments: 8,
  657. },
  658. children: [],
  659. },
  660. "right-tree-c": {
  661. type: "Sphere",
  662. props: {
  663. position: [-0.5, 2, 0.3],
  664. rotation: null,
  665. scale: [1, 1.3, 1],
  666. castShadow: true,
  667. receiveShadow: false,
  668. material: {
  669. color: "#3a8c3a",
  670. metalness: 0,
  671. roughness: 0.95,
  672. emissive: null,
  673. emissiveIntensity: null,
  674. opacity: null,
  675. transparent: null,
  676. wireframe: null,
  677. },
  678. radius: 0.5,
  679. widthSegments: 12,
  680. heightSegments: 8,
  681. },
  682. children: [],
  683. },
  684. "island-far-float": {
  685. type: "Float",
  686. props: {
  687. position: [2, 3, -10],
  688. rotation: null,
  689. scale: [0.7, 0.7, 0.7],
  690. speed: 0.3,
  691. rotationIntensity: 0.01,
  692. floatIntensity: 0.3,
  693. enabled: true,
  694. },
  695. children: ["far-base", "far-top", "far-under"],
  696. },
  697. "far-base": {
  698. type: "Cylinder",
  699. props: {
  700. position: [0, 0, 0],
  701. rotation: null,
  702. scale: null,
  703. castShadow: true,
  704. receiveShadow: true,
  705. material: {
  706. color: "#8B6914",
  707. metalness: 0.1,
  708. roughness: 0.9,
  709. emissive: null,
  710. emissiveIntensity: null,
  711. opacity: null,
  712. transparent: null,
  713. wireframe: null,
  714. },
  715. radiusTop: 2.5,
  716. radiusBottom: 1.2,
  717. height: 1.5,
  718. radialSegments: 12,
  719. },
  720. children: [],
  721. },
  722. "far-top": {
  723. type: "Cylinder",
  724. props: {
  725. position: [0, 0.65, 0],
  726. rotation: null,
  727. scale: null,
  728. castShadow: true,
  729. receiveShadow: true,
  730. material: {
  731. color: "#3a7a3a",
  732. metalness: 0,
  733. roughness: 0.95,
  734. emissive: null,
  735. emissiveIntensity: null,
  736. opacity: null,
  737. transparent: null,
  738. wireframe: null,
  739. },
  740. radiusTop: 2.55,
  741. radiusBottom: 2.5,
  742. height: 0.2,
  743. radialSegments: 12,
  744. },
  745. children: [],
  746. },
  747. "far-under": {
  748. type: "Cone",
  749. props: {
  750. position: [0, -1.8, 0],
  751. rotation: [PI, 0, 0],
  752. scale: null,
  753. castShadow: true,
  754. receiveShadow: false,
  755. material: {
  756. color: "#6B4513",
  757. metalness: 0.1,
  758. roughness: 0.95,
  759. emissive: null,
  760. emissiveIntensity: null,
  761. opacity: null,
  762. transparent: null,
  763. wireframe: null,
  764. },
  765. radius: 1.2,
  766. height: 2,
  767. radialSegments: 10,
  768. },
  769. children: [],
  770. },
  771. "island-tiny1-float": {
  772. type: "Float",
  773. props: {
  774. position: [-3, 2.5, -5],
  775. rotation: null,
  776. scale: [0.4, 0.4, 0.4],
  777. speed: 0.8,
  778. rotationIntensity: 0.05,
  779. floatIntensity: 0.8,
  780. enabled: true,
  781. },
  782. children: ["tiny1-rock"],
  783. },
  784. "tiny1-rock": {
  785. type: "Sphere",
  786. props: {
  787. position: null,
  788. rotation: null,
  789. scale: [1, 0.6, 1],
  790. castShadow: true,
  791. receiveShadow: false,
  792. material: {
  793. color: "#8B6914",
  794. metalness: 0.1,
  795. roughness: 0.9,
  796. emissive: null,
  797. emissiveIntensity: null,
  798. opacity: null,
  799. transparent: null,
  800. wireframe: null,
  801. },
  802. radius: 1,
  803. widthSegments: 12,
  804. heightSegments: 8,
  805. },
  806. children: [],
  807. },
  808. "island-tiny2-float": {
  809. type: "Float",
  810. props: {
  811. position: [8, -0.5, 1],
  812. rotation: null,
  813. scale: [0.3, 0.3, 0.3],
  814. speed: 1,
  815. rotationIntensity: 0.08,
  816. floatIntensity: 1,
  817. enabled: true,
  818. },
  819. children: ["tiny2-rock"],
  820. },
  821. "tiny2-rock": {
  822. type: "Sphere",
  823. props: {
  824. position: null,
  825. rotation: null,
  826. scale: [1.2, 0.5, 0.8],
  827. castShadow: true,
  828. receiveShadow: false,
  829. material: {
  830. color: "#7a5a10",
  831. metalness: 0.1,
  832. roughness: 0.9,
  833. emissive: null,
  834. emissiveIntensity: null,
  835. opacity: null,
  836. transparent: null,
  837. wireframe: null,
  838. },
  839. radius: 1,
  840. widthSegments: 12,
  841. heightSegments: 8,
  842. },
  843. children: [],
  844. },
  845. "bridge-1": {
  846. type: "RoundedBox",
  847. props: {
  848. position: [-3.57, -0.1, 1.19],
  849. rotation: [0, 0.32, 0],
  850. scale: null,
  851. castShadow: true,
  852. receiveShadow: true,
  853. material: {
  854. color: "#8B6914",
  855. metalness: 0.1,
  856. roughness: 0.9,
  857. emissive: null,
  858. emissiveIntensity: null,
  859. opacity: null,
  860. transparent: null,
  861. wireframe: null,
  862. },
  863. width: 3.5,
  864. height: 0.5,
  865. depth: 0.6,
  866. radius: 0.05,
  867. smoothness: 2,
  868. },
  869. children: [],
  870. },
  871. "bridge-2": {
  872. type: "RoundedBox",
  873. props: {
  874. position: [3.19, -0.1, -1.74],
  875. rotation: [0, 0.5, 0],
  876. scale: null,
  877. castShadow: true,
  878. receiveShadow: true,
  879. material: {
  880. color: "#8B6914",
  881. metalness: 0.1,
  882. roughness: 0.9,
  883. emissive: null,
  884. emissiveIntensity: null,
  885. opacity: null,
  886. transparent: null,
  887. wireframe: null,
  888. },
  889. width: 3.0,
  890. height: 0.5,
  891. depth: 0.6,
  892. radius: 0.05,
  893. smoothness: 2,
  894. },
  895. children: [],
  896. },
  897. sparkles: {
  898. type: "Sparkles",
  899. props: {
  900. position: [0, 2, 0],
  901. rotation: null,
  902. scale: [20, 8, 20],
  903. count: 120,
  904. speed: 0.1,
  905. opacity: 0.5,
  906. color: "#ffeeaa",
  907. size: 1.5,
  908. noise: 1,
  909. },
  910. children: [],
  911. },
  912. controls: {
  913. type: "OrbitControls",
  914. props: {
  915. enableDamping: true,
  916. dampingFactor: null,
  917. enableZoom: true,
  918. enablePan: null,
  919. enableRotate: true,
  920. minDistance: 8,
  921. maxDistance: 30,
  922. minPolarAngle: 0.2,
  923. maxPolarAngle: 1.5,
  924. autoRotate: true,
  925. autoRotateSpeed: 0.3,
  926. target: [0, 1, 0],
  927. },
  928. children: [],
  929. },
  930. },
  931. },
  932. };