I faced such problem. My task is to convert the imported *.obj, rotated to a convenient angle of view, into a svg file.
Here is an example https://exporttosvg.olegpustovoit.repl.co/
What is the problem - when exporting the mesh and geometry created by the methods of the library, the color and shape are exported correctly. But the imported obj file, with the simplest material, is exported only as a black shape
It appears SVGRenderer
needs ambient light in order to be happy. Try the following:
- just before using
SVGRenderer
addAmbientLight
to the scene - when the SVG is captured, remove the light from the scene
Here is a modified version of your btnSVGExportClick
that does this:
function btnSVGExportClick(){
// add ambient light to make SVGRenderer happy
var ambient = new THREE.AmbientLight( 'white' );
scene.add( ambient );
// the original code
var rendererSVG = new SVGRenderer();
rendererSVG.setSize(window.innerWidth, window.innerHeight);
rendererSVG.render( scene, camera );
ExportToSVG(rendererSVG, "test.svg");
// remove the ambient light
scene.remove( ambient );
}
Many thanks for the advice, it confirmed my suspicions about the lack of light for materials that are not emissive. I will definitely try your modification soon
You are absolutely right! Your method solved my problem!