@3driseai/3drise-viewer 0.1.41 → 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animationsV2/ClipsRuntime.d.ts +16 -1
- package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
- package/dist/animationsV2/ClipsRuntime.js +144 -25
- package/dist/animationsV2/appliers.d.ts +9 -0
- package/dist/animationsV2/appliers.d.ts.map +1 -1
- package/dist/animationsV2/appliers.js +62 -2
- package/dist/animationsV2/clipUtils.d.ts +30 -0
- package/dist/animationsV2/clipUtils.d.ts.map +1 -1
- package/dist/animationsV2/clipUtils.js +163 -17
- package/dist/animationsV2/elementSettings.d.ts +5 -0
- package/dist/animationsV2/elementSettings.d.ts.map +1 -1
- package/dist/animationsV2/elementSettings.js +6 -3
- package/dist/animationsV2/sequenceUtils.js +4 -4
- package/dist/animationsV2/types.d.ts +23 -0
- package/dist/animationsV2/types.d.ts.map +1 -1
- package/dist/api/sceneHandle.js +2 -2
- package/dist/components/CreatedObject.d.ts +3 -0
- package/dist/components/CreatedObject.d.ts.map +1 -1
- package/dist/components/CreatedObject.js +6 -2
- package/dist/components/CustomPrimitive.d.ts.map +1 -1
- package/dist/components/CustomPrimitive.js +1 -10
- package/dist/components/EnvironmentManager.d.ts.map +1 -1
- package/dist/components/EnvironmentManager.js +11 -5
- package/dist/components/GeometryShape.d.ts +5 -2
- package/dist/components/GeometryShape.d.ts.map +1 -1
- package/dist/components/GeometryShape.js +71 -10
- package/dist/components/LandObject.d.ts.map +1 -1
- package/dist/components/LandObject.js +1 -1
- package/dist/components/LayoutInstances.d.ts +2 -1
- package/dist/components/LayoutInstances.d.ts.map +1 -1
- package/dist/components/LayoutInstances.js +39 -6
- package/dist/components/LightObject.d.ts.map +1 -1
- package/dist/components/LightObject.js +3 -0
- package/dist/components/ObjectNode.d.ts.map +1 -1
- package/dist/components/ObjectNode.js +62 -13
- package/dist/components/OceanBuilder.d.ts +2 -0
- package/dist/components/OceanBuilder.d.ts.map +1 -1
- package/dist/components/OceanBuilder.js +2 -1
- package/dist/components/RenderEffects.d.ts +8 -0
- package/dist/components/RenderEffects.d.ts.map +1 -0
- package/dist/components/RenderEffects.js +120 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +18 -9
- package/dist/components/SportsObject.d.ts +9 -0
- package/dist/components/SportsObject.d.ts.map +1 -0
- package/dist/components/SportsObject.js +20 -0
- package/dist/components/UrbanObject.d.ts +9 -0
- package/dist/components/UrbanObject.d.ts.map +1 -0
- package/dist/components/UrbanObject.js +28 -0
- package/dist/components/VegetationObject.d.ts +9 -0
- package/dist/components/VegetationObject.d.ts.map +1 -0
- package/dist/components/VegetationObject.js +26 -0
- package/dist/components/WaterObject.d.ts +15 -0
- package/dist/components/WaterObject.d.ts.map +1 -0
- package/dist/components/WaterObject.js +29 -0
- package/dist/components/index.d.ts +7 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +6 -1
- package/dist/components/land/LandPatch.d.ts +3 -1
- package/dist/components/land/LandPatch.d.ts.map +1 -1
- package/dist/components/land/LandPatch.js +80 -7
- package/dist/components/layout/InstancedLayout.d.ts +19 -0
- package/dist/components/layout/InstancedLayout.d.ts.map +1 -0
- package/dist/components/layout/InstancedLayout.js +154 -0
- package/dist/components/layout/LayoutGrounds.d.ts +19 -0
- package/dist/components/layout/LayoutGrounds.d.ts.map +1 -0
- package/dist/components/layout/LayoutGrounds.js +104 -0
- package/dist/components/layout/LinkProxies.d.ts +5 -0
- package/dist/components/layout/LinkProxies.d.ts.map +1 -0
- package/dist/components/layout/LinkProxies.js +51 -0
- package/dist/components/layout/LinkedSource.d.ts +14 -0
- package/dist/components/layout/LinkedSource.d.ts.map +1 -0
- package/dist/components/layout/LinkedSource.js +129 -0
- package/dist/components/projector/Projector.d.ts +14 -0
- package/dist/components/projector/Projector.d.ts.map +1 -0
- package/dist/components/projector/Projector.js +44 -0
- package/dist/components/projector/index.d.ts +4 -0
- package/dist/components/projector/index.d.ts.map +1 -0
- package/dist/components/projector/index.js +2 -0
- package/dist/components/projector/projectorCore.d.ts +19 -0
- package/dist/components/projector/projectorCore.d.ts.map +1 -0
- package/dist/components/projector/projectorCore.js +545 -0
- package/dist/components/sports/SportsBall.d.ts +9 -0
- package/dist/components/sports/SportsBall.d.ts.map +1 -0
- package/dist/components/sports/SportsBall.js +23 -0
- package/dist/components/sports/SportsCourt.d.ts +9 -0
- package/dist/components/sports/SportsCourt.d.ts.map +1 -0
- package/dist/components/sports/SportsCourt.js +23 -0
- package/dist/components/sports/SportsEquipment.d.ts +9 -0
- package/dist/components/sports/SportsEquipment.d.ts.map +1 -0
- package/dist/components/sports/SportsEquipment.js +23 -0
- package/dist/components/sports/SportsGoal.d.ts +9 -0
- package/dist/components/sports/SportsGoal.d.ts.map +1 -0
- package/dist/components/sports/SportsGoal.js +23 -0
- package/dist/components/sports/core/ball.d.ts +166 -0
- package/dist/components/sports/core/ball.d.ts.map +1 -0
- package/dist/components/sports/core/ball.js +402 -0
- package/dist/components/sports/core/court.d.ts +442 -0
- package/dist/components/sports/core/court.d.ts.map +1 -0
- package/dist/components/sports/core/court.js +658 -0
- package/dist/components/sports/core/equipment.d.ts +103 -0
- package/dist/components/sports/core/equipment.d.ts.map +1 -0
- package/dist/components/sports/core/equipment.js +403 -0
- package/dist/components/sports/core/goal.d.ts +98 -0
- package/dist/components/sports/core/goal.d.ts.map +1 -0
- package/dist/components/sports/core/goal.js +44 -0
- package/dist/components/sports/index.d.ts +11 -0
- package/dist/components/sports/index.d.ts.map +1 -0
- package/dist/components/sports/index.js +8 -0
- package/dist/components/sports/sportsCore.d.ts +195 -0
- package/dist/components/sports/sportsCore.d.ts.map +1 -0
- package/dist/components/sports/sportsCore.js +758 -0
- package/dist/components/sports/useSportsInstance.d.ts +35 -0
- package/dist/components/sports/useSportsInstance.d.ts.map +1 -0
- package/dist/components/sports/useSportsInstance.js +47 -0
- package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
- package/dist/components/terrain/TerrainSurface.js +14 -0
- package/dist/components/urban/UrbanBlock.d.ts +9 -0
- package/dist/components/urban/UrbanBlock.d.ts.map +1 -0
- package/dist/components/urban/UrbanBlock.js +23 -0
- package/dist/components/urban/UrbanBuilding.d.ts +9 -0
- package/dist/components/urban/UrbanBuilding.d.ts.map +1 -0
- package/dist/components/urban/UrbanBuilding.js +23 -0
- package/dist/components/urban/UrbanJunction.d.ts +9 -0
- package/dist/components/urban/UrbanJunction.d.ts.map +1 -0
- package/dist/components/urban/UrbanJunction.js +23 -0
- package/dist/components/urban/UrbanPark.d.ts +9 -0
- package/dist/components/urban/UrbanPark.d.ts.map +1 -0
- package/dist/components/urban/UrbanPark.js +23 -0
- package/dist/components/urban/UrbanParkingLot.d.ts +9 -0
- package/dist/components/urban/UrbanParkingLot.d.ts.map +1 -0
- package/dist/components/urban/UrbanParkingLot.js +23 -0
- package/dist/components/urban/UrbanPlaza.d.ts +9 -0
- package/dist/components/urban/UrbanPlaza.d.ts.map +1 -0
- package/dist/components/urban/UrbanPlaza.js +23 -0
- package/dist/components/urban/UrbanRoad.d.ts +9 -0
- package/dist/components/urban/UrbanRoad.d.ts.map +1 -0
- package/dist/components/urban/UrbanRoad.js +23 -0
- package/dist/components/urban/UrbanSignage.d.ts +9 -0
- package/dist/components/urban/UrbanSignage.d.ts.map +1 -0
- package/dist/components/urban/UrbanSignage.js +23 -0
- package/dist/components/urban/UrbanSkyline.d.ts +9 -0
- package/dist/components/urban/UrbanSkyline.d.ts.map +1 -0
- package/dist/components/urban/UrbanSkyline.js +23 -0
- package/dist/components/urban/UrbanStreetFurniture.d.ts +9 -0
- package/dist/components/urban/UrbanStreetFurniture.d.ts.map +1 -0
- package/dist/components/urban/UrbanStreetFurniture.js +23 -0
- package/dist/components/urban/UrbanStreetGrid.d.ts +9 -0
- package/dist/components/urban/UrbanStreetGrid.d.ts.map +1 -0
- package/dist/components/urban/UrbanStreetGrid.js +34 -0
- package/dist/components/urban/UrbanTraffic.d.ts +9 -0
- package/dist/components/urban/UrbanTraffic.d.ts.map +1 -0
- package/dist/components/urban/UrbanTraffic.js +23 -0
- package/dist/components/urban/core/block.d.ts +119 -0
- package/dist/components/urban/core/block.d.ts.map +1 -0
- package/dist/components/urban/core/block.js +266 -0
- package/dist/components/urban/core/building.d.ts +128 -0
- package/dist/components/urban/core/building.d.ts.map +1 -0
- package/dist/components/urban/core/building.js +741 -0
- package/dist/components/urban/core/junction.d.ts +152 -0
- package/dist/components/urban/core/junction.d.ts.map +1 -0
- package/dist/components/urban/core/junction.js +617 -0
- package/dist/components/urban/core/park.d.ts +67 -0
- package/dist/components/urban/core/park.d.ts.map +1 -0
- package/dist/components/urban/core/park.js +176 -0
- package/dist/components/urban/core/parkingLot.d.ts +82 -0
- package/dist/components/urban/core/parkingLot.d.ts.map +1 -0
- package/dist/components/urban/core/parkingLot.js +284 -0
- package/dist/components/urban/core/plaza.d.ts +24 -0
- package/dist/components/urban/core/plaza.d.ts.map +1 -0
- package/dist/components/urban/core/plaza.js +243 -0
- package/dist/components/urban/core/road.d.ts +113 -0
- package/dist/components/urban/core/road.d.ts.map +1 -0
- package/dist/components/urban/core/road.js +347 -0
- package/dist/components/urban/core/signage.d.ts +83 -0
- package/dist/components/urban/core/signage.d.ts.map +1 -0
- package/dist/components/urban/core/signage.js +209 -0
- package/dist/components/urban/core/skyline.d.ts +100 -0
- package/dist/components/urban/core/skyline.d.ts.map +1 -0
- package/dist/components/urban/core/skyline.js +89 -0
- package/dist/components/urban/core/streetFurniture.d.ts +75 -0
- package/dist/components/urban/core/streetFurniture.d.ts.map +1 -0
- package/dist/components/urban/core/streetFurniture.js +193 -0
- package/dist/components/urban/core/streetGrid.d.ts +134 -0
- package/dist/components/urban/core/streetGrid.d.ts.map +1 -0
- package/dist/components/urban/core/streetGrid.js +422 -0
- package/dist/components/urban/core/traffic.d.ts +125 -0
- package/dist/components/urban/core/traffic.d.ts.map +1 -0
- package/dist/components/urban/core/traffic.js +305 -0
- package/dist/components/urban/index.d.ts +29 -0
- package/dist/components/urban/index.d.ts.map +1 -0
- package/dist/components/urban/index.js +16 -0
- package/dist/components/urban/textureSetResolver.d.ts +8 -0
- package/dist/components/urban/textureSetResolver.d.ts.map +1 -0
- package/dist/components/urban/textureSetResolver.js +16 -0
- package/dist/components/urban/urbanCore.d.ts +262 -0
- package/dist/components/urban/urbanCore.d.ts.map +1 -0
- package/dist/components/urban/urbanCore.js +928 -0
- package/dist/components/urban/useUrbanInstance.d.ts +53 -0
- package/dist/components/urban/useUrbanInstance.d.ts.map +1 -0
- package/dist/components/urban/useUrbanInstance.js +100 -0
- package/dist/components/vegetation/VegetationBush.d.ts +9 -0
- package/dist/components/vegetation/VegetationBush.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationBush.js +23 -0
- package/dist/components/vegetation/VegetationCrops.d.ts +9 -0
- package/dist/components/vegetation/VegetationCrops.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationCrops.js +23 -0
- package/dist/components/vegetation/VegetationFlowers.d.ts +9 -0
- package/dist/components/vegetation/VegetationFlowers.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationFlowers.js +23 -0
- package/dist/components/vegetation/VegetationForest.d.ts +9 -0
- package/dist/components/vegetation/VegetationForest.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationForest.js +23 -0
- package/dist/components/vegetation/VegetationFruit.d.ts +9 -0
- package/dist/components/vegetation/VegetationFruit.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationFruit.js +23 -0
- package/dist/components/vegetation/VegetationGrass.d.ts +9 -0
- package/dist/components/vegetation/VegetationGrass.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationGrass.js +23 -0
- package/dist/components/vegetation/VegetationHedge.d.ts +9 -0
- package/dist/components/vegetation/VegetationHedge.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationHedge.js +23 -0
- package/dist/components/vegetation/VegetationIvy.d.ts +9 -0
- package/dist/components/vegetation/VegetationIvy.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationIvy.js +23 -0
- package/dist/components/vegetation/VegetationTree.d.ts +9 -0
- package/dist/components/vegetation/VegetationTree.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationTree.js +23 -0
- package/dist/components/vegetation/VegetationVegetable.d.ts +9 -0
- package/dist/components/vegetation/VegetationVegetable.d.ts.map +1 -0
- package/dist/components/vegetation/VegetationVegetable.js +23 -0
- package/dist/components/vegetation/core/bush.d.ts +1256 -0
- package/dist/components/vegetation/core/bush.d.ts.map +1 -0
- package/dist/components/vegetation/core/bush.js +376 -0
- package/dist/components/vegetation/core/crops.d.ts +1033 -0
- package/dist/components/vegetation/core/crops.d.ts.map +1 -0
- package/dist/components/vegetation/core/crops.js +378 -0
- package/dist/components/vegetation/core/flowers.d.ts +648 -0
- package/dist/components/vegetation/core/flowers.d.ts.map +1 -0
- package/dist/components/vegetation/core/flowers.js +225 -0
- package/dist/components/vegetation/core/forest.d.ts +138 -0
- package/dist/components/vegetation/core/forest.d.ts.map +1 -0
- package/dist/components/vegetation/core/forest.js +310 -0
- package/dist/components/vegetation/core/fruit.d.ts +99 -0
- package/dist/components/vegetation/core/fruit.d.ts.map +1 -0
- package/dist/components/vegetation/core/fruit.js +77 -0
- package/dist/components/vegetation/core/grass.d.ts +103 -0
- package/dist/components/vegetation/core/grass.d.ts.map +1 -0
- package/dist/components/vegetation/core/grass.js +102 -0
- package/dist/components/vegetation/core/hedge.d.ts +193 -0
- package/dist/components/vegetation/core/hedge.d.ts.map +1 -0
- package/dist/components/vegetation/core/hedge.js +243 -0
- package/dist/components/vegetation/core/ivy.d.ts +213 -0
- package/dist/components/vegetation/core/ivy.d.ts.map +1 -0
- package/dist/components/vegetation/core/ivy.js +173 -0
- package/dist/components/vegetation/core/tree.d.ts +1117 -0
- package/dist/components/vegetation/core/tree.d.ts.map +1 -0
- package/dist/components/vegetation/core/tree.js +408 -0
- package/dist/components/vegetation/core/vegetable.d.ts +99 -0
- package/dist/components/vegetation/core/vegetable.d.ts.map +1 -0
- package/dist/components/vegetation/core/vegetable.js +76 -0
- package/dist/components/vegetation/index.d.ts +23 -0
- package/dist/components/vegetation/index.d.ts.map +1 -0
- package/dist/components/vegetation/index.js +14 -0
- package/dist/components/vegetation/produceCore.d.ts +929 -0
- package/dist/components/vegetation/produceCore.d.ts.map +1 -0
- package/dist/components/vegetation/produceCore.js +723 -0
- package/dist/components/vegetation/useVegetationInstance.d.ts +39 -0
- package/dist/components/vegetation/useVegetationInstance.d.ts.map +1 -0
- package/dist/components/vegetation/useVegetationInstance.js +45 -0
- package/dist/components/vegetation/vegetationCore.d.ts +412 -0
- package/dist/components/vegetation/vegetationCore.d.ts.map +1 -0
- package/dist/components/vegetation/vegetationCore.js +1728 -0
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +5 -0
- package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
- package/dist/components/volumetricClouds/VolumetricCloudsPass.js +39 -13
- package/dist/components/water/OceanSurface.d.ts.map +1 -1
- package/dist/components/water/OceanSurface.js +3 -2
- package/dist/components/water/WaterBody.d.ts.map +1 -1
- package/dist/components/water/WaterBody.js +31 -10
- package/dist/components/water/WaterFountain.d.ts +9 -0
- package/dist/components/water/WaterFountain.d.ts.map +1 -0
- package/dist/components/water/WaterFountain.js +24 -0
- package/dist/components/water/WaterStream.d.ts +9 -0
- package/dist/components/water/WaterStream.d.ts.map +1 -0
- package/dist/components/water/WaterStream.js +24 -0
- package/dist/components/water/WaterWaterfall.d.ts +9 -0
- package/dist/components/water/WaterWaterfall.d.ts.map +1 -0
- package/dist/components/water/WaterWaterfall.js +24 -0
- package/dist/components/water/core/fountain.d.ts +70 -0
- package/dist/components/water/core/fountain.d.ts.map +1 -0
- package/dist/components/water/core/fountain.js +619 -0
- package/dist/components/water/core/stream.d.ts +72 -0
- package/dist/components/water/core/stream.d.ts.map +1 -0
- package/dist/components/water/core/stream.js +167 -0
- package/dist/components/water/core/waterfall.d.ts +78 -0
- package/dist/components/water/core/waterfall.d.ts.map +1 -0
- package/dist/components/water/core/waterfall.js +325 -0
- package/dist/components/water/index.d.ts +8 -0
- package/dist/components/water/index.d.ts.map +1 -1
- package/dist/components/water/index.js +7 -0
- package/dist/components/water/types.d.ts +3 -0
- package/dist/components/water/types.d.ts.map +1 -1
- package/dist/components/water/useWaterInstance.d.ts +43 -0
- package/dist/components/water/useWaterInstance.d.ts.map +1 -0
- package/dist/components/water/useWaterInstance.js +89 -0
- package/dist/components/water/waterCore.d.ts +179 -0
- package/dist/components/water/waterCore.d.ts.map +1 -0
- package/dist/components/water/waterCore.js +516 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +9 -1
- package/dist/hooks/index.d.ts +7 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -2
- package/dist/hooks/useActionPatch.d.ts +23 -0
- package/dist/hooks/useActionPatch.d.ts.map +1 -0
- package/dist/hooks/useActionPatch.js +38 -0
- package/dist/hooks/useCloudSun.d.ts.map +1 -1
- package/dist/hooks/useCloudSun.js +3 -2
- package/dist/hooks/useCommittedInstance.d.ts +6 -0
- package/dist/hooks/useCommittedInstance.d.ts.map +1 -0
- package/dist/hooks/useCommittedInstance.js +42 -0
- package/dist/hooks/useConfigLive.d.ts +1 -1
- package/dist/hooks/useConfigLive.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
- package/dist/hooks/useContinuousEffects.js +36 -20
- package/dist/hooks/useGridLayout.d.ts +7 -0
- package/dist/hooks/useGridLayout.d.ts.map +1 -0
- package/dist/hooks/useGridLayout.js +10 -0
- package/dist/hooks/useInteractionEffects.d.ts.map +1 -1
- package/dist/hooks/useInteractionEffects.js +48 -9
- package/dist/hooks/useLightLive.d.ts.map +1 -1
- package/dist/hooks/useLightLive.js +2 -0
- package/dist/hooks/useLinkStatus.d.ts +7 -0
- package/dist/hooks/useLinkStatus.d.ts.map +1 -0
- package/dist/hooks/useLinkStatus.js +20 -0
- package/dist/hooks/useMaterialApplication.d.ts +6 -1
- package/dist/hooks/useMaterialApplication.d.ts.map +1 -1
- package/dist/hooks/useMaterialApplication.js +7 -2
- package/dist/hooks/useOceanMaterial.d.ts +11 -1
- package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
- package/dist/hooks/useOceanMaterial.js +185 -27
- package/dist/hooks/usePathAnimation.d.ts +8 -0
- package/dist/hooks/usePathAnimation.d.ts.map +1 -1
- package/dist/hooks/usePathAnimation.js +140 -59
- package/dist/hooks/useResolvedLayout.d.ts +10 -0
- package/dist/hooks/useResolvedLayout.d.ts.map +1 -0
- package/dist/hooks/useResolvedLayout.js +17 -0
- package/dist/hooks/useTimeLighting.d.ts +36 -0
- package/dist/hooks/useTimeLighting.d.ts.map +1 -0
- package/dist/hooks/useTimeLighting.js +67 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -1
- package/dist/operations/catalogue/shaderLayers.js +26 -3
- package/dist/render/renderLive.d.ts +11 -0
- package/dist/render/renderLive.d.ts.map +1 -0
- package/dist/render/renderLive.js +57 -0
- package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
- package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
- package/dist/shaders/glsl/oceanCore.glsl.js +35 -5
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +12 -0
- package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
- package/dist/shaders/ocean/OceanSurfaceMaterial.js +55 -7
- package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
- package/dist/shaders/terrain/TerrainMaterial.js +28 -0
- package/dist/triggers/kinds/change.js +1 -1
- package/dist/ui/UiLayers.d.ts +17 -1
- package/dist/ui/UiLayers.d.ts.map +1 -1
- package/dist/ui/UiLayers.js +76 -3
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/utils/composerHostedPass.d.ts +74 -0
- package/dist/utils/composerHostedPass.d.ts.map +1 -0
- package/dist/utils/composerHostedPass.js +63 -0
- package/dist/utils/geometryScript.d.ts +17 -0
- package/dist/utils/geometryScript.d.ts.map +1 -0
- package/dist/utils/geometryScript.js +92 -0
- package/dist/utils/geometryScript.worker.d.ts +2 -0
- package/dist/utils/geometryScript.worker.d.ts.map +1 -0
- package/dist/utils/geometryScript.worker.js +42 -0
- package/dist/utils/groundRegistry.d.ts +11 -0
- package/dist/utils/groundRegistry.d.ts.map +1 -0
- package/dist/utils/groundRegistry.js +39 -0
- package/dist/utils/instancingSupport.d.ts +9 -0
- package/dist/utils/instancingSupport.d.ts.map +1 -0
- package/dist/utils/instancingSupport.js +13 -0
- package/dist/utils/landPatch.d.ts +26 -5
- package/dist/utils/landPatch.d.ts.map +1 -1
- package/dist/utils/landPatch.js +124 -9
- package/dist/utils/layoutPlacement.d.ts +30 -0
- package/dist/utils/layoutPlacement.d.ts.map +1 -0
- package/dist/utils/layoutPlacement.js +113 -0
- package/dist/utils/linkRegistry.d.ts +15 -0
- package/dist/utils/linkRegistry.d.ts.map +1 -0
- package/dist/utils/linkRegistry.js +11 -0
- package/dist/utils/shapes.d.ts +28 -2
- package/dist/utils/shapes.d.ts.map +1 -1
- package/dist/utils/shapes.js +32 -3
- package/dist/utils/sharedParts.d.ts +61 -0
- package/dist/utils/sharedParts.d.ts.map +1 -0
- package/dist/utils/sharedParts.js +268 -0
- package/dist/utils/svgAsset.d.ts +6 -0
- package/dist/utils/svgAsset.d.ts.map +1 -0
- package/dist/utils/svgAsset.js +46 -0
- package/dist/utils/waterLight.d.ts +29 -0
- package/dist/utils/waterLight.d.ts.map +1 -0
- package/dist/utils/waterLight.js +67 -0
- package/dist/utils/waterReflection.d.ts +185 -0
- package/dist/utils/waterReflection.d.ts.map +1 -0
- package/dist/utils/waterReflection.js +616 -0
- package/package.json +4 -3
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import type { AnimationOptions, MouseMoveDomain } from '@3driseai/3drise-core';
|
|
4
|
+
import type { ObjectReadyProps } from '../../types/objectReady';
|
|
5
|
+
export interface VegetationInstance {
|
|
6
|
+
object: THREE.Object3D;
|
|
7
|
+
materials: THREE.Material[];
|
|
8
|
+
apply(cfg: Record<string, unknown>): void;
|
|
9
|
+
/** Per frame. The renderer is for the impostor bake (detail levels); variants without one ignore it. */
|
|
10
|
+
update(dt: number, camera: THREE.Camera, sunWorld: THREE.Vector3, renderer?: THREE.WebGLRenderer): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
}
|
|
13
|
+
export interface VegetationVariantProps extends ObjectReadyProps {
|
|
14
|
+
config: {
|
|
15
|
+
type: string;
|
|
16
|
+
};
|
|
17
|
+
/** Scene object id: the live-edit handle is found by it. */
|
|
18
|
+
id?: string;
|
|
19
|
+
/** Keyframes on the config knobs (animations.vegetation.animations). */
|
|
20
|
+
keyframes?: AnimationOptions[];
|
|
21
|
+
/** Pointer bindings on the config knobs (mouseMove.vegetation). */
|
|
22
|
+
mouseMove?: MouseMoveDomain;
|
|
23
|
+
}
|
|
24
|
+
export interface VegetationCore {
|
|
25
|
+
DEFAULTS: Record<string, unknown>;
|
|
26
|
+
STRUCTURAL: readonly string[];
|
|
27
|
+
ANIMATABLE: ReadonlySet<string>;
|
|
28
|
+
createUniforms(): Record<string, {
|
|
29
|
+
value: any;
|
|
30
|
+
}>;
|
|
31
|
+
build(u: Record<string, {
|
|
32
|
+
value: any;
|
|
33
|
+
}>, cfg: Record<string, unknown>): VegetationInstance;
|
|
34
|
+
}
|
|
35
|
+
export declare function useVegetationInstance(core: VegetationCore, props: VegetationVariantProps): {
|
|
36
|
+
rootRef: RefObject<THREE.Group | null>;
|
|
37
|
+
instance: VegetationInstance;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useVegetationInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVegetationInstance.d.ts","sourceRoot":"","sources":["../../../src/components/vegetation/useVegetationInstance.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA4D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjG,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5B,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,wGAAwG;IACxG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;IACxG,OAAO,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/B,mEAAmE;IACnE,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IACjD,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAAC;CAC9F;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,sBAAsB,GAAG;IAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,kBAAkB,CAAA;CAAE,CAwBnK"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// useVegetationInstance — the React side every vegetation component shares
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// A variant's core (vegetation/core/<key>.ts, emitted from the lab module) is plain three.js:
|
|
6
|
+
// createUniforms(), build(u, cfg) -> { object, apply, update, dispose }. This hook wires it into
|
|
7
|
+
// the config pattern:
|
|
8
|
+
//
|
|
9
|
+
// - base config over the type's defaults (withConfigDefaults);
|
|
10
|
+
// - built once; a change of a STRUCTURAL knob rebuilds (dispose + build, the uniforms outlive
|
|
11
|
+
// it so phases and keyframes survive); every other committed change and every per-frame
|
|
12
|
+
// override goes through instance.apply (the one door: live drag, keyframes, pointer
|
|
13
|
+
// bindings, timeline clips — useConfigDriver);
|
|
14
|
+
// - the scene sun (useCloudSun) for the leaves' translucency only — the plants are lit by the
|
|
15
|
+
// scene's lights like any mesh;
|
|
16
|
+
// - the renderer, for the impostor bake of the detail levels (tree, bush, hedge);
|
|
17
|
+
// - readiness (useObjectReady) and disposal.
|
|
18
|
+
//
|
|
19
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
20
|
+
import { useFrame } from '@react-three/fiber';
|
|
21
|
+
import { withConfigDefaults } from '../../utils/configAnimations.js';
|
|
22
|
+
import { useObjectReady } from '../../hooks/useObjectReady.js';
|
|
23
|
+
import { useConfigDriver } from '../../hooks/useConfigDriver.js';
|
|
24
|
+
import { useCloudSun } from '../../hooks/useCloudSun.js';
|
|
25
|
+
export function useVegetationInstance(core, props) {
|
|
26
|
+
const { config, id, keyframes, mouseMove, onObjectReady, onObjectDispose } = props;
|
|
27
|
+
const rootRef = useRef(null);
|
|
28
|
+
useObjectReady(rootRef, config, onObjectReady, onObjectDispose);
|
|
29
|
+
const cfg = useMemo(() => withConfigDefaults(core.DEFAULTS, config), [config]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
30
|
+
// uniforms outlive rebuilds, so phases and keyframes survive a structural change
|
|
31
|
+
const uniforms = useMemo(() => core.createUniforms(), []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
32
|
+
const structuralKey = JSON.stringify(core.STRUCTURAL.map((k) => cfg[k]));
|
|
33
|
+
const instance = useMemo(() => core.build(uniforms, cfg), [uniforms, structuralKey]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
34
|
+
useEffect(() => () => instance.dispose(), [instance]);
|
|
35
|
+
useLayoutEffect(() => { instance.apply(cfg); }, [instance, cfg]);
|
|
36
|
+
const push = useCallback((merged) => { instance.apply(merged); }, [instance]);
|
|
37
|
+
useConfigDriver({ rootRef, id, family: 'vegetation', base: cfg, structural: core.STRUCTURAL, allowed: core.ANIMATABLE, keyframes, mouseMove, push });
|
|
38
|
+
// the scene's sun, read-only: only the translucency of the leaves looks at it
|
|
39
|
+
const sun = useCloudSun();
|
|
40
|
+
useFrame((state, delta) => {
|
|
41
|
+
const s = sun.update();
|
|
42
|
+
instance.update(Math.min(delta, 0.1), state.camera, s.direction, state.gl);
|
|
43
|
+
});
|
|
44
|
+
return { rootRef, instance };
|
|
45
|
+
}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export declare const DEG_V: number;
|
|
3
|
+
export declare const WIND_MS_VEG = 8;
|
|
4
|
+
export declare function mulberry32(a: any): () => number;
|
|
5
|
+
export declare function setColor(uniform: any, v: any): void;
|
|
6
|
+
/** Uniforms every vegetation object has (shared by all of its materials). */
|
|
7
|
+
export declare function createCommonUniforms(): {
|
|
8
|
+
uTime: {
|
|
9
|
+
value: number;
|
|
10
|
+
};
|
|
11
|
+
uWindPhase: {
|
|
12
|
+
value: number;
|
|
13
|
+
};
|
|
14
|
+
uWindDir: {
|
|
15
|
+
value: THREE.Vector2;
|
|
16
|
+
};
|
|
17
|
+
uWindStrength: {
|
|
18
|
+
value: number;
|
|
19
|
+
};
|
|
20
|
+
uTurb: {
|
|
21
|
+
value: number;
|
|
22
|
+
};
|
|
23
|
+
uSpeed: {
|
|
24
|
+
value: number;
|
|
25
|
+
};
|
|
26
|
+
uSway: {
|
|
27
|
+
value: number;
|
|
28
|
+
};
|
|
29
|
+
uFlutter: {
|
|
30
|
+
value: number;
|
|
31
|
+
};
|
|
32
|
+
uScale: {
|
|
33
|
+
value: THREE.Vector3;
|
|
34
|
+
};
|
|
35
|
+
uMean: {
|
|
36
|
+
value: number;
|
|
37
|
+
};
|
|
38
|
+
uOpacity: {
|
|
39
|
+
value: number;
|
|
40
|
+
};
|
|
41
|
+
uColor: {
|
|
42
|
+
value: THREE.Color;
|
|
43
|
+
};
|
|
44
|
+
uShadeColor: {
|
|
45
|
+
value: THREE.Color;
|
|
46
|
+
};
|
|
47
|
+
uSeason: {
|
|
48
|
+
value: number;
|
|
49
|
+
};
|
|
50
|
+
uFoliage: {
|
|
51
|
+
value: number;
|
|
52
|
+
};
|
|
53
|
+
uLeafType: {
|
|
54
|
+
value: number;
|
|
55
|
+
};
|
|
56
|
+
uLeafSize: {
|
|
57
|
+
value: number;
|
|
58
|
+
};
|
|
59
|
+
uGrowth: {
|
|
60
|
+
value: number;
|
|
61
|
+
};
|
|
62
|
+
uSunDirView: {
|
|
63
|
+
value: THREE.Vector3;
|
|
64
|
+
};
|
|
65
|
+
uViewPos: {
|
|
66
|
+
value: THREE.Vector3;
|
|
67
|
+
};
|
|
68
|
+
uLodK: {
|
|
69
|
+
value: number;
|
|
70
|
+
};
|
|
71
|
+
uLodOrtho: {
|
|
72
|
+
value: number;
|
|
73
|
+
};
|
|
74
|
+
uLodBias: {
|
|
75
|
+
value: number;
|
|
76
|
+
};
|
|
77
|
+
uImpReady: {
|
|
78
|
+
value: number;
|
|
79
|
+
};
|
|
80
|
+
uBake: {
|
|
81
|
+
value: number;
|
|
82
|
+
};
|
|
83
|
+
uBakeView: {
|
|
84
|
+
value: THREE.Matrix3;
|
|
85
|
+
};
|
|
86
|
+
uBakeDepth: {
|
|
87
|
+
value: THREE.Vector2;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
/** The base knobs every vegetation object shares (push point, part 1). */
|
|
91
|
+
export declare function applyCommonConfig(u: any, c: any): void;
|
|
92
|
+
export declare const _vs: THREE.Vector3, _vq: THREE.Quaternion, _vsun: THREE.Vector3, _vm: THREE.Matrix3;
|
|
93
|
+
/** Per-frame bookkeeping shared by every object: scale, integrated phases, sun into view space. */
|
|
94
|
+
export declare function updateCommon(u: any, object: any, camera: any, dt: any, sunWorld: any): void;
|
|
95
|
+
export declare const LEAF_TYPES: string[];
|
|
96
|
+
export declare const VEG_UNIFORMS_GLSL = "\nuniform float uTime, uWindPhase, uWindStrength, uTurb, uSpeed, uSway, uFlutter, uOpacity, uSeason, uFoliage, uLeafType, uLeafSize, uGrowth;\nuniform float uMean;\nuniform vec2 uWindDir;\nuniform vec3 uScale, uColor, uShadeColor, uSunDirView;\nuniform vec3 uViewPos; uniform float uLodK, uLodOrtho, uLodBias, uImpReady, uBake; uniform mat3 uBakeView; uniform vec2 uBakeDepth;\n// The plant's skeleton follows the (possibly non-uniform) transform scale; its local shapes (cards,\n// fruit, blade widths, bark rings) must not: an offset in \"mean-scale units\" is divided back per axis\n// so it stays isotropic in the world, and its normal is pre-multiplied by the scale so the normal\n// matrix (which undoes the scale) lands on the isotropic normal.\nvec3 isoOff(vec3 o) { return o * uMean / uScale; }\nvec3 isoNrm(vec3 n) { return normalize(n * uScale); }\n";
|
|
97
|
+
export declare const NOISE_GLSL_V = "\nfloat vhash12(vec2 p) { vec3 q = fract(vec3(p.xyx) * 0.1031); q += dot(q, q.yzx + 33.33); return fract((q.x + q.y) * q.z); }\nfloat vhash11(float p) { p = fract(p * 0.1031); p *= p + 33.33; p *= p + p; return fract(p); }\nfloat vnoise2v(vec2 p) {\n vec2 i = floor(p); vec2 f = fract(p); f = f * f * (3.0 - 2.0 * f);\n return mix(mix(vhash12(i), vhash12(i + vec2(1, 0)), f.x), mix(vhash12(i + vec2(0, 1)), vhash12(i + vec2(1, 1)), f.x), f.y);\n}\nfloat fbm2v(vec2 p) { return (0.5 * vnoise2v(p) + 0.25 * vnoise2v(p * 2.03 + 7.1) + 0.125 * vnoise2v(p * 4.07 + 3.3)) / 0.875; }\nfloat vbump(float x) { float t = clamp(1.0 - x * x, 0.0, 1.0); return t * t; }\nvec3 qrot(vec4 q, vec3 v) { return v + 2.0 * cross(q.xyz, cross(q.xyz, v) + q.w * v); }\n";
|
|
98
|
+
/**
|
|
99
|
+
* The wind as one displacement field over the plant (unit space).
|
|
100
|
+
* gust low-frequency noise travelling downwind (uWindPhase), sharpened by turbulence into
|
|
101
|
+
* separate gust fronts, so the whole plant leans and recovers rather than oscillating.
|
|
102
|
+
* bend the plant leans with the gust, ∝ height² (a cantilever), losing a little height.
|
|
103
|
+
* sway each branch oscillates at its own frequency and phase (w.x) with its own flexibility
|
|
104
|
+
* (w.y), driven by the gust strength; sideways component so tips draw ellipses.
|
|
105
|
+
* w = (phase, flexibility). hf = height fraction of the attachment (0 ground, 1 top).
|
|
106
|
+
*/
|
|
107
|
+
export declare const WIND_GLSL = "\n#ifndef VEG_M\n#define VEG_M modelMatrix\n#endif\nfloat gustAt(vec2 xz) {\n // metres: the point inside the plant plus where the plant stands (modelMatrix), so gust fronts\n // travel across a group of plants and copies of one plant (layouts) do not sway in lockstep\n vec2 q = (xz * uScale.xz + VEG_M[3].xz) * 0.06 - uWindDir * uWindPhase * 0.08;\n float g = vnoise2v(q) * 0.65 + vnoise2v(q * 3.1 + uTime * 0.15) * 0.35;\n g = mix(g, smoothstep(0.35, 0.75, g), uTurb);\n return 0.25 + 1.5 * g;\n}\nvec3 plantDisplace(vec3 p, float hf, vec2 w) {\n float W = uWindStrength * gustAt(p.xz);\n float h2 = hf * hf;\n // cantilever lean: a quarter of the height in a full gale on a flexible plant\n vec2 lean = uWindDir * W * 0.25 * h2 * uSway;\n // branch sway: own frequency and phase, elliptical tip path\n float f = 1.3 + 1.6 * w.y;\n float s = sin(uTime * f + w.x * 6.2832) * W * w.y * 0.08 * uSway * hf;\n float c = cos(uTime * f * 0.71 + w.x * 4.1) * W * w.y * 0.03 * uSway * hf;\n vec3 d = vec3(lean.x, -0.35 * length(lean) * hf, lean.y);\n d += vec3(uWindDir.x * s - uWindDir.y * c, 0.25 * abs(s), uWindDir.y * s + uWindDir.x * c);\n return d;\n}\n";
|
|
108
|
+
/**
|
|
109
|
+
* Leaf shape as a signed distance in card space (x across, y along, base at y = -1, tip at y = 1),
|
|
110
|
+
* for every leaf type. Positive = outside. Anti-aliased by the caller with fwidth.
|
|
111
|
+
*/
|
|
112
|
+
export declare const LEAF_SDF_GLSL = "\n// serrated margin: small teeth along the edge, finer toward the tip\nfloat teeth(float t, float k, float amp) { return amp * abs(sin(t * k * 3.1416)) * (1.0 - 0.5 * t); }\nfloat leafSdf(vec2 p, float type, float h) {\n float t = (p.y + 1.0) * 0.5; // 0 base .. 1 tip\n // asymmetry: one half a little wider, the midrib slightly bowed\n float asym = 1.0 + 0.1 * (h - 0.5) * sign(p.x);\n float ax = abs(p.x - 0.06 * (h - 0.5) * sin(3.1416 * t));\n if (type < 0.5) { // broadleaf: ovate, pointed drip tip, fine serration\n float w = (0.62 * pow(sin(3.1416 * clamp(t, 0.0, 1.0)), 0.7) * (1.0 - 0.25 * t) + 0.02 * (1.0 - t)) * asym;\n w -= teeth(t, 14.0 + 6.0 * h, 0.025);\n return max(ax - w, -p.y - 1.0);\n } else if (type < 1.5) { // lobed (oak): rounded lobes with deep sinuses\n float lob = 0.5 + 0.5 * cos(3.1416 * (t * 7.0 + 0.5 + 0.4 * h));\n lob = smoothstep(0.0, 1.0, lob);\n float w = (0.3 + 0.36 * lob) * pow(sin(3.1416 * clamp(t, 0.02, 1.0)), 0.45) * asym;\n return max(max(ax - w, -p.y - 1.0), p.y - 1.0);\n } else if (type < 2.5) { // needles: a tuft fanning from the base\n float d = 1e3;\n for (int i = 0; i < 7; i++) {\n float a = (float(i) - 3.0) * 0.21 + 0.1 * (h - 0.5);\n vec2 dir = vec2(sin(a), cos(a));\n vec2 q = p - vec2(0.0, -1.0);\n float s = clamp(dot(q, dir), 0.0, 1.9 - 0.15 * abs(float(i) - 3.0));\n d = min(d, length(q - dir * s) - 0.035);\n }\n return d;\n } else if (type < 3.5) { // round (box, privet): obovate with a notch at the tip\n float w = 0.68 * pow(sin(3.1416 * clamp(t, 0.0, 1.0)), 0.55) * (0.85 + 0.3 * t) * asym;\n float notch = smoothstep(0.08, 0.0, ax) * smoothstep(0.9, 1.0, t) * 0.12;\n return max(ax - w, -p.y - 1.0 + 0.0) + notch;\n } else if (type < 4.5) { // lanceolate (willow): long, narrow, finely toothed\n float w = 0.2 * pow(sin(3.1416 * clamp(t, 0.0, 1.0)), 0.55) * asym - teeth(t, 22.0, 0.012);\n return max(ax - w, -p.y - 1.0);\n } else if (type < 5.5) { // frond: a rachis with leaflets\n float rachis = ax - 0.04;\n float seg = fract(t * 9.0 + 0.5) - 0.5;\n float leaflet = max(abs(seg) - 0.28 * (1.0 - t * 0.6), ax - 0.95 * (1.0 - t * 0.85) * smoothstep(0.0, 0.05, t));\n return max(min(rachis, leaflet), -p.y - 1.0);\n } else if (type < 6.5) { // ivy: three to five lobes, cordate base\n vec2 q = vec2(ax, p.y + 0.15);\n float c = length(q - vec2(0.0, 0.1)) - 0.75;\n float side = length(q - vec2(0.55, -0.25)) - 0.5;\n float tip = max(ax * 1.6 - (1.0 - p.y) * 0.9, -p.y - 0.5);\n float base = -(length(q - vec2(0.0, -0.95)) - 0.25); // the notch at the stalk\n return max(min(min(c, side), tip), base);\n } else if (type < 7.5) { // petal: a soft drop, widest near the tip, a wavy edge\n float w = 0.55 * pow(sin(3.1416 * clamp(t, 0.0, 1.0)), 0.5) * (0.55 + 0.45 * t) * asym;\n w += 0.03 * sin(t * 19.0 + h * 7.0) * t;\n return max(ax - w, -p.y - 1.0);\n } else if (type < 8.5) { // blade (grass): tapering strip\n return max(ax - 0.12 * (1.0 - t * 0.9), -p.y - 1.0);\n }\n // maple: palmate, five pointed lobes from the base\n vec2 q = p - vec2(0.0, -0.75);\n float r = length(q), a = atan(q.x, q.y);\n float lobes = 0.55 + 0.55 * pow(abs(cos(a * 2.5)), 0.35) * (1.0 - 0.35 * abs(a) / 3.1416);\n float lim = smoothstep(2.6, 1.9, abs(a));\n return r - 1.55 * lobes * lim * (1.0 - 0.1 * h);\n}\n";
|
|
113
|
+
/**
|
|
114
|
+
* Distance detail for a plant and every copy of it (layout mirrors, linked instances). One quantity
|
|
115
|
+
* decides, s: the plant's bounding radius over the camera's half-height at its distance (≈ the share of
|
|
116
|
+
* half the screen it fills). The CPU (per draw: onBeforeRender / onBeforeShadow, from the drawn mesh's
|
|
117
|
+
* own matrixWorld, so each mirror decides for itself) and the GPU (vertex, from modelMatrix) evaluate
|
|
118
|
+
* the same s from the same shared uniforms (uViewPos / uLodK = the main camera, set in updateCommon).
|
|
119
|
+
* s > FULL every leaf, curled cards, every branch level
|
|
120
|
+
* FLAT..FULL the leaf count falls toward MIN, the cards grow (1/√share, ≤ GROW) so the cover holds
|
|
121
|
+
* s < FLAT flat cards (2 triangles instead of 16), the finest branch level dropped
|
|
122
|
+
* IMP·0.8 .. IMP·1.2 dithered cross-fade to the impostor (both drawn, complementary pixels)
|
|
123
|
+
* s < IMP·0.8 the impostor alone: one octahedral-impostor card
|
|
124
|
+
* Shadow pass: flat cards, SHADOW × the leaves, trunk + first branch level; the impostor casts below IMP.
|
|
125
|
+
*/
|
|
126
|
+
export declare const LOD: {
|
|
127
|
+
FULL: number;
|
|
128
|
+
FLAT: number;
|
|
129
|
+
IMP: number;
|
|
130
|
+
MIN: number;
|
|
131
|
+
SHADOW: number;
|
|
132
|
+
GROW: number;
|
|
133
|
+
FADE_IN: number;
|
|
134
|
+
FADE_OUT: number;
|
|
135
|
+
};
|
|
136
|
+
export declare const LOD_GLSL_V: string;
|
|
137
|
+
/** Interleaved gradient noise: the dither of the cross-fade (full detail keeps the pixels the impostor leaves). */
|
|
138
|
+
export declare const LOD_GLSL_F = "\nfloat vegIgn(vec2 p) { return fract(52.9829189 * fract(dot(p, vec2(0.06711056, 0.00583715)))); }\n";
|
|
139
|
+
/**
|
|
140
|
+
* Bark: a lit material whose vertices follow the wind (aWind = hf, phase, flex; aRing = angle 0..1,
|
|
141
|
+
* length along the branch in metres-at-scale-1) and whose surface is procedural bark: vertical ridges
|
|
142
|
+
* (anisotropic fbm), fissures darkening with depth, lichen specks on the shaded side, as a bump map.
|
|
143
|
+
*/
|
|
144
|
+
export declare function barkMaterial(u: any, opts: any): {
|
|
145
|
+
material: THREE.MeshStandardMaterial;
|
|
146
|
+
depth: THREE.MeshDepthMaterial;
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Leaf cards: one instanced draw. Per instance: aPos (attachment, unit space), aQuat (card frame:
|
|
150
|
+
* card x across, y along, z = normal), aInfoA = (size, hash, hf, ao), aInfoB = (phase, flex, order, kind).
|
|
151
|
+
* The card is a 2×2 quad; `uFoliage` keeps the leaves whose `order` is below it (the inner,
|
|
152
|
+
* late-season leaves go first). The fragment cuts the leaf shape (SDF, anti-aliased), colours from
|
|
153
|
+
* the hash, the canopy depth and the season, and adds translucent back-light.
|
|
154
|
+
*/
|
|
155
|
+
export declare function leafMaterial(u: any, opts: any): {
|
|
156
|
+
material: THREE.MeshStandardMaterial;
|
|
157
|
+
depth: THREE.MeshDepthMaterial;
|
|
158
|
+
};
|
|
159
|
+
/** The leaf card: a 3×5 grid (so it can curl along and across) with instance buffers for `count` leaves. */
|
|
160
|
+
export declare const CARD_NX = 3, CARD_NY = 5;
|
|
161
|
+
/** Index counts: the curled grid, then the flat card that follows it. */
|
|
162
|
+
export declare const CARD_IDX: number, FLAT_IDX = 6;
|
|
163
|
+
export declare function leafGeometry(count: any): THREE.InstancedBufferGeometry;
|
|
164
|
+
/** Writes leaf i: attachment, frame from (along = card +y, normal = card +z), size, hash, hf, ao, phase, flex, order, kind. */
|
|
165
|
+
export declare function setLeaf(geo: any, i: any, pos: any, along: any, normal: any, size: any, hash: any, hf: any, ao: any, phase: any, flex: any, order: any, kind: any): void;
|
|
166
|
+
/** The leaf's plant root (for growth). */
|
|
167
|
+
export declare function setLeafRoot(geo: any, i: any, root: any): void;
|
|
168
|
+
/** Bounds-only: the unit box, so Box3.expandByObject centres the gizmo on the plant (instanced attrs are not read). */
|
|
169
|
+
export declare function unitBounds(geo: any): void;
|
|
170
|
+
/**
|
|
171
|
+
* A parametric branching model (after Weber & Penn): each level has a child count, length and
|
|
172
|
+
* radius ratios, a down angle from the parent, a phyllotactic rotation, curvature and gravity
|
|
173
|
+
* (droop). A branch is a polyline with tapering radii; the crown silhouette is a shape function of
|
|
174
|
+
* the attachment height. Deterministic for a seed. Lengths in unit space (height 1).
|
|
175
|
+
*
|
|
176
|
+
* params:
|
|
177
|
+
* levels number of branch levels after the trunk (0..3)
|
|
178
|
+
* trunk { length, radius, taper, curve, segments, splits? }
|
|
179
|
+
* level[i] { count, length, radius, downAngle, downVar, curve, curveVar, segments, start }
|
|
180
|
+
* shape(t) crown silhouette multiplier for first-level branch length by attachment t
|
|
181
|
+
* droop gravity on the branches (negative lifts them)
|
|
182
|
+
* twist extra random curvature
|
|
183
|
+
* leaves { perLength, size, sizeVar, spread, fromLevel, tuft }
|
|
184
|
+
* Returns { branches: [{ level, pts, radii, hf0, phase, flex }], leaves: [{ pos, along, normal, size, hf, ao, phase, flex, order }] }.
|
|
185
|
+
*/
|
|
186
|
+
export declare function generatePlant(P: any, rnd: any): {
|
|
187
|
+
branches: any[];
|
|
188
|
+
leaves: any[];
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Generalized cylinders for every branch, merged in one geometry: rings of `sides` vertices
|
|
192
|
+
* (fewer on thin branches) along the polyline, parallel-transport frames, a pointed cap.
|
|
193
|
+
* Attributes: position, normal, aRing (angle 0..1, length along), aWind (hf, phase, flex).
|
|
194
|
+
*/
|
|
195
|
+
export declare function branchGeometry(branches: any, opts: any): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>;
|
|
196
|
+
/** Fills a leaf geometry from generatePlant's leaves (optionally the first `count`). */
|
|
197
|
+
export declare function fillLeaves(geo: any, leaves: any, kind?: any): number;
|
|
198
|
+
/**
|
|
199
|
+
* Hanging fruit: instanced low-poly spheroids at a subset of the leaf positions, shaped per kind in
|
|
200
|
+
* the vertex shader (oblate / prolate / dimple / taper), skinned per kind in the fragment (two
|
|
201
|
+
* colours by ripeness, waxy specular, pores / streaks), swinging with the branch.
|
|
202
|
+
* aPos, aInfo = (size, hash, hf, order), aWind = (phase, flex).
|
|
203
|
+
*/
|
|
204
|
+
export declare const FRUIT_KINDS: string[];
|
|
205
|
+
export declare const FRUIT_PROFILES: {
|
|
206
|
+
apple: {
|
|
207
|
+
elong: number;
|
|
208
|
+
dimple: number;
|
|
209
|
+
taper: number;
|
|
210
|
+
size: number;
|
|
211
|
+
unripe: string;
|
|
212
|
+
ripe: string;
|
|
213
|
+
gloss: number;
|
|
214
|
+
streaks: number;
|
|
215
|
+
pores: number;
|
|
216
|
+
};
|
|
217
|
+
orange: {
|
|
218
|
+
elong: number;
|
|
219
|
+
dimple: number;
|
|
220
|
+
taper: number;
|
|
221
|
+
size: number;
|
|
222
|
+
unripe: string;
|
|
223
|
+
ripe: string;
|
|
224
|
+
gloss: number;
|
|
225
|
+
streaks: number;
|
|
226
|
+
pores: number;
|
|
227
|
+
};
|
|
228
|
+
lemon: {
|
|
229
|
+
elong: number;
|
|
230
|
+
dimple: number;
|
|
231
|
+
taper: number;
|
|
232
|
+
size: number;
|
|
233
|
+
unripe: string;
|
|
234
|
+
ripe: string;
|
|
235
|
+
gloss: number;
|
|
236
|
+
streaks: number;
|
|
237
|
+
pores: number;
|
|
238
|
+
};
|
|
239
|
+
cherry: {
|
|
240
|
+
elong: number;
|
|
241
|
+
dimple: number;
|
|
242
|
+
taper: number;
|
|
243
|
+
size: number;
|
|
244
|
+
unripe: string;
|
|
245
|
+
ripe: string;
|
|
246
|
+
gloss: number;
|
|
247
|
+
streaks: number;
|
|
248
|
+
pores: number;
|
|
249
|
+
};
|
|
250
|
+
pear: {
|
|
251
|
+
elong: number;
|
|
252
|
+
dimple: number;
|
|
253
|
+
taper: number;
|
|
254
|
+
size: number;
|
|
255
|
+
unripe: string;
|
|
256
|
+
ripe: string;
|
|
257
|
+
gloss: number;
|
|
258
|
+
streaks: number;
|
|
259
|
+
pores: number;
|
|
260
|
+
};
|
|
261
|
+
plum: {
|
|
262
|
+
elong: number;
|
|
263
|
+
dimple: number;
|
|
264
|
+
taper: number;
|
|
265
|
+
size: number;
|
|
266
|
+
unripe: string;
|
|
267
|
+
ripe: string;
|
|
268
|
+
gloss: number;
|
|
269
|
+
streaks: number;
|
|
270
|
+
pores: number;
|
|
271
|
+
};
|
|
272
|
+
berry: {
|
|
273
|
+
elong: number;
|
|
274
|
+
dimple: number;
|
|
275
|
+
taper: number;
|
|
276
|
+
size: number;
|
|
277
|
+
unripe: string;
|
|
278
|
+
ripe: string;
|
|
279
|
+
gloss: number;
|
|
280
|
+
streaks: number;
|
|
281
|
+
pores: number;
|
|
282
|
+
};
|
|
283
|
+
rosehip: {
|
|
284
|
+
elong: number;
|
|
285
|
+
dimple: number;
|
|
286
|
+
taper: number;
|
|
287
|
+
size: number;
|
|
288
|
+
unripe: string;
|
|
289
|
+
ripe: string;
|
|
290
|
+
gloss: number;
|
|
291
|
+
streaks: number;
|
|
292
|
+
pores: number;
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
export declare function fruitMaterial(u: any): {
|
|
296
|
+
material: THREE.MeshStandardMaterial;
|
|
297
|
+
depth: THREE.MeshDepthMaterial;
|
|
298
|
+
};
|
|
299
|
+
export declare function applyFruitConfig(mat: any, c: any): void;
|
|
300
|
+
export declare function fruitGeometry(count: any, detail: any): THREE.InstancedBufferGeometry;
|
|
301
|
+
/** Fruit at a seeded subset of the outer leaves; `size` in unit space (fruit radius ≈ size/2 × profile size). */
|
|
302
|
+
export declare function fillFruit(geo: any, leaves: any, rnd: any, size: any): void;
|
|
303
|
+
/**
|
|
304
|
+
* Leaves letting go: a small instanced card layer. Each card cycles analytically — released from a
|
|
305
|
+
* canopy leaf's position, it falls with a side-to-side glide and a tumble, drifts with the wind,
|
|
306
|
+
* and fades at the ground; then starts again. `uLeafFall` says how many are
|
|
307
|
+
* in the air; the season releases more.
|
|
308
|
+
*/
|
|
309
|
+
export declare function fallingMaterial(u: any): {
|
|
310
|
+
material: THREE.MeshStandardMaterial;
|
|
311
|
+
depth: THREE.MeshDepthMaterial;
|
|
312
|
+
};
|
|
313
|
+
/** A shadow-casting mesh from a geometry and a { material, depth } pair; clicks pass through. */
|
|
314
|
+
export declare function plantMesh(geo: any, pair: any, name: any): THREE.Mesh<any, any, THREE.Object3DEventMap>;
|
|
315
|
+
/** The quality table every plant uses: a multiplier on counts. */
|
|
316
|
+
export declare const QUALITY_V: {
|
|
317
|
+
low: number;
|
|
318
|
+
medium: number;
|
|
319
|
+
high: number;
|
|
320
|
+
};
|
|
321
|
+
/**
|
|
322
|
+
* Bent blades: one instanced strip (2 × SEG+1 vertices) per blade. Per instance: aPos (root), aInfoA =
|
|
323
|
+
* (height, width, yaw, hash), aInfoB = (bend, phase, order, kind). In the vertex the blade curves
|
|
324
|
+
* along its bend direction (quadratic, tip bends most), the wind field bends it further ∝ t²
|
|
325
|
+
* (plantDisplace with hf = t) plus a travelling ripple. The fragment
|
|
326
|
+
* shades a base-to-tip gradient with per-blade variation and translucency.
|
|
327
|
+
*/
|
|
328
|
+
export declare const BLADE_SEG = 6;
|
|
329
|
+
export declare function bladeGeometry(count: any): THREE.InstancedBufferGeometry;
|
|
330
|
+
export declare function setBlade(geo: any, i: any, pos: any, height: any, width: any, yaw: any, hash: any, bend: any, phase: any, order: any, kind: any): void;
|
|
331
|
+
export declare function bladeMaterial(u: any, opts: any): {
|
|
332
|
+
material: THREE.MeshStandardMaterial;
|
|
333
|
+
depth: THREE.MeshDepthMaterial;
|
|
334
|
+
};
|
|
335
|
+
/** Seeded positions over the unit footprint with clumping: jittered grid, kept where a clump noise says so. */
|
|
336
|
+
export declare function clumpedPositions(count: any, rnd: any, clumping: any, margin: any): any[];
|
|
337
|
+
/**
|
|
338
|
+
* Flower heads at branch tips (blossom on trees, flowers on shrubs): each head is a fan of petal cards
|
|
339
|
+
* around the tip (a `head` of several florets scattered in a small dome for panicles), coloured by its
|
|
340
|
+
* own uniforms. `uFoliage` of the head material is the flowers knob (0..1 keeps that share of heads).
|
|
341
|
+
* spec: { petals, size, color, head?, type?, hang? }. Returns { geo, pair, U } (U.uFoliage / U.uColor).
|
|
342
|
+
*/
|
|
343
|
+
export declare function flowerHeads(u: any, tips: any, rnd: any, spec: any, maxHeads: any, matOpts?: any): {
|
|
344
|
+
geo: THREE.InstancedBufferGeometry;
|
|
345
|
+
pair: {
|
|
346
|
+
material: THREE.MeshStandardMaterial;
|
|
347
|
+
depth: THREE.MeshDepthMaterial;
|
|
348
|
+
};
|
|
349
|
+
U: any;
|
|
350
|
+
};
|
|
351
|
+
/** The plant's screen size s from a drawn mesh's matrixWorld — the same formula as vegLodS (GLSL). */
|
|
352
|
+
export declare function lodScreenSize(m: any, u: any): number;
|
|
353
|
+
/** The share of the leaves drawn at screen size s (vegLodFrac). */
|
|
354
|
+
export declare function lodFrac(s: any): number;
|
|
355
|
+
/** The lod knob: auto (by distance), full (never reduce — a hero plant), impostor (always the far card). */
|
|
356
|
+
export declare const LOD_MODES: string[];
|
|
357
|
+
export declare function applyLodMode(u: any, mode: any): void;
|
|
358
|
+
/** Leaves in a random order (own stream, so the plant's other random draws are unchanged): drawing the first K is an even thinning. */
|
|
359
|
+
export declare function lodOrder(list: any, seed: any): any;
|
|
360
|
+
/**
|
|
361
|
+
* The impostor card: one quad billboarded toward the camera in the vertex shader (toward the light in the
|
|
362
|
+
* shadow pass — the depth material runs the same code with the shadow camera), textured from the 8×8
|
|
363
|
+
* hemi-octahedral atlas: the view direction in the plant's own frame picks the three nearest baked views
|
|
364
|
+
* and their weights; each pixel of the card is projected onto each view's plane (no parallax: fine at the
|
|
365
|
+
* distances it is drawn) and the three samples are blended. Albedo + plant-space normal, so the scene's sun
|
|
366
|
+
* lights it like the plant. `position` holds unit-box corners (gizmo bounds); the card is aCorner.
|
|
367
|
+
*/
|
|
368
|
+
export declare const IMP_N = 8, IMP_FRAME = 128, IMP_CHUNK = 16, IMP_MARGIN = 1.04;
|
|
369
|
+
export declare function impostorMaterial(u: any): {
|
|
370
|
+
material: THREE.MeshStandardMaterial;
|
|
371
|
+
depth: THREE.MeshDepthMaterial;
|
|
372
|
+
own: {
|
|
373
|
+
uImpC: {
|
|
374
|
+
value: any;
|
|
375
|
+
};
|
|
376
|
+
uImpN: {
|
|
377
|
+
value: any;
|
|
378
|
+
};
|
|
379
|
+
uImpGrid: {
|
|
380
|
+
value: number;
|
|
381
|
+
};
|
|
382
|
+
uImpR: {
|
|
383
|
+
value: number;
|
|
384
|
+
};
|
|
385
|
+
uImpScale: {
|
|
386
|
+
value: THREE.Vector3;
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
};
|
|
390
|
+
export declare function plantLod(u: any, object: any, parts: any): {
|
|
391
|
+
impostor: THREE.Mesh<any, any, THREE.Object3DEventMap>;
|
|
392
|
+
state: {
|
|
393
|
+
u: any;
|
|
394
|
+
ready: boolean;
|
|
395
|
+
wanted: boolean;
|
|
396
|
+
dirty: boolean;
|
|
397
|
+
changedAt: number;
|
|
398
|
+
lastBake: number;
|
|
399
|
+
t: number;
|
|
400
|
+
frame: number;
|
|
401
|
+
key: string;
|
|
402
|
+
bakeScale: THREE.Vector3;
|
|
403
|
+
rtC: any;
|
|
404
|
+
rtN: any;
|
|
405
|
+
};
|
|
406
|
+
/** Per frame, after updateCommon: hides empty parts, bakes when wanted and stale. */
|
|
407
|
+
update(dt: any, renderer: any): void;
|
|
408
|
+
/** After every apply: the lod knob, and a re-bake when a knob that changes the look moved. */
|
|
409
|
+
applied(cfg: any): void;
|
|
410
|
+
dispose(): void;
|
|
411
|
+
};
|
|
412
|
+
//# sourceMappingURL=vegetationCore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vegetationCore.d.ts","sourceRoot":"","sources":["../../../src/components/vegetation/vegetationCore.ts"],"names":[],"mappings":"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"}
|