I'd like to add my own suggestion how to enable support for file previews in viewmesh, without changing the cal3d content:
___
Open a *.cal3d file in a text editor or viewer, and look at the content, especially the paths inside - like where they expect the textures in the Virtual File System. Probably all PlaneShift meshes will use a path like "/planeshift/models/{name}". Remember this structure.
Now edit the file "vfs.cfg" in the directory where you installed the CrystalSpace tools (Windows users: the Binary Artist Package), means: Where viewmesh and walktest are installed to. You will see different entries with mount points, e.g. "VFS.Mount.data = $@data$/".
At the end of the file, add another line "VFS.Mount.planeshift = $@data$/planeshift$/". Then, create a directory "planeshift" inside the directory "data" in your CrystalSpace installation (at the same level where already directories like "flarge" or "isomap" are). Inside that, create another directory "models". So you will now have a directory tree like ".../CrystalSpace/data/planeshift/models".
Inside this directory, now unpack the archives "npcs.zip" and "characters.zip" from the directory ".../PlaneShift Crystal Blue/art". They had been divided into different ZIP archives, but for the Virtual File System, they still belong to "planeshift/models", therefore I recreated a matching directory structure physically.
When you now start viewmesh, you will find a directory entry "planeshift" in the file dialog to open a mesh. And when you open a *.cal3d file in one of the subdirectories under "planeshift/models", the textures are found and added without error.
Note: You can of course also use other directories as mount point in the VFS, it doesn't need to be a directory branch under CrystalSpace/data. So it can also be a static, full qualified path, or a path under your home directory. The file vfs.cfg contains a brief documentation about the special path syntax used for relative locations.