
Wood
Use flat grain without glossy hotspots; Metalness should remain Off.
OPTIONAL 3D MATERIAL WORKFLOW
Upload a wood, stone, fabric, concrete, plaster, or wall photo. Repair the left/right and top/bottom seams, inspect the repeat, then generate approximate aligned maps for Blender, Unity, Unreal, and quick 3D material prototypes.
Drag & drop an image here
or paste a URL / click to browse
SeamlessCanvas turns one flat material photo into a seamless Base Color texture, then derives aligned Normal, Roughness, Height, Ambient Occlusion, and optional Metalness maps. It is designed for fast Blender, Unity, Unreal, and look-development tests. The maps are image-derived approximations, not photogrammetry or physically calibrated material measurements.
Start from the material photo you already have. The tool repairs the repeat before it derives maps, so every exported channel shares the same tile boundary.
Inspect the seamless base texture before generating approximate aligned PBR maps.
Upload an image and the final seamless base texture will appear here.
Texture Outputs
Export the base texture first, then generate optional PBR maps from the same seamless tile.
Base Texture
Preview settings
Crop a flat, front-facing, evenly lit material patch and remove large distractions.
Match left/right and top/bottom edges, then inspect a 3×3 repeat for seams and landmarks.
Keep the channels your shader needs and set Metalness deliberately for metal or non-metal sources.
Import the maps with the correct color-space settings and judge scale under scene lighting.
The maps stay spatially aligned because they are derived from the same repaired tile. Their values remain estimates from one image, so use them as a starting point and validate the material under real scene lighting.
| Map | Role | Interpretation | Important limit |
|---|---|---|---|
| Base Color | The repaired seamless color texture used as the shared source for the map set. | Color / sRGB | Lighting or reflections left in the photo remain baked into the color. |
| Normal | Encodes small surface direction changes derived from the generated height map. | Non-color data | Confirm normal orientation in the target renderer; it is not measured geometry. |
| Roughness | Provides an approximate matte-to-gloss response from luminance and local variation. | Non-color data | A single photo cannot recover physically calibrated roughness values. |
| Height | Creates a grayscale relief estimate for displacement or bump experiments. | Non-color data | Beta. Dark and light pixels do not always correspond to physical depth. |
| Ambient Occlusion | Approximates small crevice darkening for quick material previews. | Non-color data | Do not treat it as a measured lighting pass or multiply it blindly into every shader. |
| Metalness | Outputs a metal/non-metal control map when the source material requires it. | Non-color data | Keep Off for wood, stone, fabric, concrete, and plaster; set On for photographed metal. |
Continuous surfaces with small distributed detail are stronger candidates than scenes, objects, dramatic lighting, or photos with one dominant feature.

Use flat grain without glossy hotspots; Metalness should remain Off.

Distributed mineral detail works better than one distinctive crack or shadow.

Photograph the weave straight on and keep Height and Normal strength subtle.

Correct perspective and broad lighting gradients before deriving maps.
A seamless map set is only the source. The destination still controls UV scale, texture addressing, color space, normal-map interpretation, filtering, mipmaps, and final lighting.
Use Repeat sampling, connect color and data maps to the correct shader inputs, and inspect the material on representative geometry.
Open the Blender workflowSet Wrap Mode to Repeat, keep color maps in sRGB, and import numerical material maps using the active render pipeline’s conventions.
Open the Unity workflowUse wrap addressing, separate Base Color from non-color data, and validate UV scale and distant mip behavior in a material instance.
Open the Unreal Engine workflowSeamlessCanvas is the lighter browser route. Choose a deeper authoring tool when you need calibrated capture, procedural graph control, extensive channel editing, or a full production material pipeline.
| Tool | Best for | Output | Tradeoff |
|---|---|---|---|
| SeamlessCanvas | Fast browser workflow from one material photo to a seamless tile and approximate aligned maps | Base Color plus optional Normal, Roughness, Height, AO, and Metalness PNGs | Built for previews and prototypes, not calibrated material capture |
| Adobe Substance 3D Sampler | Professional image-to-material work with deeper controls and a full material-authoring workflow | AI or procedural multi-channel material generation inside a desktop tool | More setup, controls, and commitment than a focused browser conversion |
| Material Maker | Free, open-source, node-based procedural material authoring | Graph-authored PBR materials for Godot, Unity, Unreal, and other workflows | Best when you want to build and tune a graph rather than run a short upload workflow |
| Adobe Photoshop | Manual cleanup when a valuable source needs precise cloning, healing, masks, or color correction | A controlled seamless base image prepared by hand | Does not provide this focused one-step aligned PBR export workflow |
The generator can repair repeat boundaries, but it cannot recover physical material measurements that one uncontrolled photograph never captured.
Avoid angled walls and floors. Perspective changes texture scale across the image and repeats that distortion.
Remove hard cast shadows, glare, bright hotspots, and strong directional gradients before map generation.
Clone or crop outlets, screws, stains, large knots, deep cracks, and other features that reveal every repeated tile.
Inspect a 3×3 or 5×5 repeat before exporting maps; a clean single square can still form a visible grid.
What the browser workflow generates, where it fits, and what still needs professional material authoring.
Repair the repeat first, inspect the seamless base texture, then generate only the maps your 3D prototype needs.