Jump to content

Making Rigged Mesh using Zbrush 4, and Blender 2.6.1


Tristus Patton
 Share

You are about to reply to a thread that has been inactive for 4533 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Hello, thank you for reading,

Im having a weird issue, I like using Zbrush to make my .obj files, I see Zbrush as an easy tool to quickly make what I want. I have an idea of making what I want in Zbrush, then export it as an obj file, then to import it into Blender, so I can make it a rigged mesh. Im still trying to figure that part out though. I am using http://wiki.secondlife.com/wiki/Mesh/Uploading_and_wearing_a_rigged_mesh#Get_a_Second_Life_compatible_rigged_mesh_file as a reference, and its really helpful. Took me a couple tries, but I figured out how to use the simplebot and have it rigged. Ive since used an obj file that was created by Blender and use simplebot as the bones. I know to select what Im working on, shift then select the bones, then make the parent, then select back on the thing Im making and "make it real" and again when I used the obj file blender made, it worked just how it was ment to.. But -every- time I try to use Zbrush, export as obj, and import obj into Blender, position it on the bones to make it look right, do all the parent stuff I need to, then export as collada 1.4, every time I try to upload the model I get an error of " Error: Dae parsing issue - see log for details". Not really sure where to find logs, and clueless on how to fix this. I spend a good deal of time trying to find information on my own, but simply could not find anything to help with this. Anyone know? can you push me in the right direction?

Thank you again for reading

Link to comment
Share on other sites

Im not sure what to look for, to be honest, but after I tried to upload, I open the log, and got.

in Firestore:

2011-11-29T22:25:04Z INFO: llui/llfloater.cpp(703) : LLFloater::closeFloater: Closing floater Preferences
2011-11-29T22:25:04Z INFO: newview/llviewertexturelist.cpp(1105) : LLViewerTextureList::getMaxVideoRamSetting: Viewer Texture Mem Pool Max: 512(4095)
2011-11-29T22:25:04Z INFO: llui/llfloaterreg.cpp(136) : LLFloaterReg::getInstance: trying to restore variables for name: prefs_hardware_settings
2011-11-29T22:25:04Z INFO: llui/llfloater.cpp(703) : LLFloater::closeFloater: Closing floater Hardware Settings Floater
2011-11-29T22:25:07Z INFO: newview/llviewerdisplay.cpp(200) : display_stats: FPS: 15.00
2011-11-29T22:25:08Z INFO: llmessage/llavatarnamecache.cpp(589) : LLAvatarNameCache::eraseUnrefreshed: 105 cached avatar names
2011-11-29T22:25:08Z INFO: newview/llappviewer.cpp(4501) : LLAppViewer::idle: Transmitting sessions stats
2011-11-29T22:25:08Z INFO: newview/llviewerstats.cpp(851) : send_stats: Misc Stats: int_1: i9 int_2: i3
2011-11-29T22:25:08Z INFO: newview/llviewerstats.cpp(852) : send_stats: Misc Stats: string_1: '1620' string_2: 'Texture Time: 397.71, Total Time: 1289.84'
2011-11-29T22:25:08Z INFO: newview/llviewerstats.cpp(392) : LLViewerStats::addToMessage: STAT: Version: 0.0
2011-11-29T22:25:08Z INFO: newview/llviewerstats.cpp(392) : LLViewerStats::addToMessage: STAT: Vertex Buffers Enabled: 1.0
2011-11-29T22:25:08Z INFO: newview/llviewerstats.cpp(398) : LLViewerStats::addToMessage: STAT: AgentPositionSnaps: Mean = 98.0; StdDev = 34.2; Count = 2
2011-11-29T22:25:09Z INFO: newview/llviewerstats.cpp(694) : ViewerStatsResponder::result: ViewerStatsResponder::result
2011-11-29T22:25:10Z INFO: newview/llfloatermodelpreview.cpp(1125) : LLFloaterModelPreview::initDecompControls: nd_AlwaysNeedTriangles -
2011-11-29T22:25:10Z WARNING: llui/llview.h(696) : LLView::getChild: Making dummy class LLCheckBoxCtrl named "nd_AlwaysNeedTriangles" in Model Preview
2011-11-29T22:25:10Z INFO: newview/llfloatermodelpreview.cpp(1125) : LLFloaterModelPreview::initDecompControls: Method -
2011-11-29T22:25:10Z INFO: newview/llfloatermodelpreview.cpp(1125) : LLFloaterModelPreview::initDecompControls: Decompose Quality -
2011-11-29T22:25:10Z INFO: newview/llfloatermodelpreview.cpp(1125) : LLFloaterModelPreview::initDecompControls: Simplify Method -
2011-11-29T22:25:10Z INFO: llui/llfloaterreg.cpp(136) : LLFloaterReg::getInstance: trying to restore variables for name: upload_model
2011-11-29T22:25:12Z WARNING: llmessage/llavatarnamecache.cpp(240) : LLAvatarNameResponder::result: LLAvatarNameResponder::result 1 unresolved ids; expires in -1322601912.0 seconds
2011-11-29T22:25:12Z WARNING: llmessage/llavatarnamecache.cpp(248) : LLAvatarNameResponder::result: LLAvatarNameResponder::result failed id acb9e7ca-4b4f-c8fa-67ee-3b77f91d777f
2011-11-29T22:25:12Z WARNING: llmessage/llavatarnamecache.cpp(286) : LLAvatarNameCache::handleAgentError: LLAvatarNameCache get legacy for agent acb9e7ca-4b4f-c8fa-67ee-3b77f91d777f
2011-11-29T22:25:14Z WARNING: llui/llview.h(696) : LLView::getChild: Making dummy class LLComboBox named "preview_lod_combo2" in Model Preview
2011-11-29T22:25:14Z WARNING: llui/llview.h(696) : LLView::getChild: Making dummy class LLComboBox named "preview_lod_combo3" in Model Preview
2011-11-29T22:25:14Z INFO: newview/llfloatermodelpreview.cpp(1496) : LLModelLoader::doLoadModel: Collada Importer Version: 1.4.1
2011-11-29T22:25:14Z INFO: newview/llfloatermodelpreview.cpp(1506) : LLModelLoader::doLoadModel: Dae version 1.4.0
2011-11-29T22:25:14Z INFO: newview/llfloatermodelpreview.cpp(2540) : LLModelPreview::verifyCount: Error: (expected/got)1056/1011verts
2011-11-29T22:25:14Z INFO: llui/llfloater.cpp(654) : LLFloater::openFloater: Opening floater Model Preview
2011-11-29T22:25:14Z INFO: newview/llfloatermodeluploadbase.cpp(47) : LLFloaterModelUploadBase::requestAgentUploadPermissions: class LLFloaterModelPreview::requestAgentUploadPermissions() requesting for upload model permissions from: https://sim8651.agni.lindenlab.com:12043/cap/93777bf7-7d20-017d-08f8-bc59e9491f82
2011-11-29T22:25:17Z INFO: newview/llviewerdisplay.cpp(200) : display_stats: FPS: 16.20

in Second Life 3.2.1 (244864) Nov 10 2011 10:33:28 (Second Life Release):

2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Simplify Method -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Retain% -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Detail Scale -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Combine Quality -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Method -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Decompose Quality -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Close Holes (Slow) -
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Simplify Coplanar -
2011-11-29T22:34:05Z WARNING: LLView::getChild: Making dummy class LLCheckBoxCtrl named "Simplify Coplanar" in Model Preview
2011-11-29T22:34:05Z INFO: LLFloaterModelPreview::initDecompControls: Cosine% -
2011-11-29T22:34:05Z WARNING: LLVOAvatar::loadSkeletonNode: Invalid group number (9) for attachment point Neck
2011-11-29T22:34:05Z WARNING: LLVOAvatar::loadSkeletonNode: Invalid group number (9) for attachment point Avatar Center

Link to comment
Share on other sites

In your first log:

LLModelPreview::verifyCount: Error: (expected/got)1056/1011verts

This indicates that you have not weighted all vertices (1056-1011 = 45 vertices have not been assigned to any weight group).

In your secnd log:

2011-11-29T22:34:05Z WARNING: LLVOAvatar::loadSkeletonNode: Invalid group number (9) for attachment point Neck
2011-11-29T22:34:05Z WARNING: LLVOAvatar::loadSkeletonNode: Invalid group number (9) for attachment point Avatar Center

I am not sure what that means. Now it would be interesting to also see the dae file.

Link to comment
Share on other sites

alright, could that be cause by exporting from Zbrush inporting to Blender? Or, rather, what is the best way to ensure that all vertices are weighted? I use the simplebot file, then inport my obj file, select my obj object.. thing, then shift and select the simplebot bones, make sure Im in object mode then make sure to parent it. then select only my object then make sure to clcik "make real" then export it. Am I missing something?

Link to comment
Share on other sites

Maybe we have to clearify first with which blender version you are working. When you write "Make Real" that implies you are on Blender 2.4. But the title of this thread is about Blender 2.6.1 (which is not yet released).

So lets assume you are on Blender 2.49:

What i am missing in your step by step description is the "weighting" step. I wonder how you parented the object to the armature. During that step you could have used

 

  • Don't Create Groups
  • Name Groups
  • Create from envelope
  • Create from bone heat

I guess you used the last option ? In any case you will probably have to check your weights and most probably adjust them too (You have a weight paint mode for this)

Link to comment
Share on other sites

ah, you are correct with the Blender version, sorry for that. Iwas reading the wrong screen, Just goes to show how little I know about Blender.. What Im confused about is how to check the weights I guess..

Ive been playing around some more with seeing what is and isnt moving with the bones.. and I do see some parts that are not moving.. they are kind of just there.. it looks like they are at a point that sorta wrinkes, its at the bottom of a sphere where all the points come together. I click "Make smooth" and it still looks wrinked. Soo Im guessing its there. Ive tried to move the object around to see if I could make it work, but no matter where I put it, it does the same thing.

It looks fine in Zbrush though, i really feel like Im missing something simple.

Link to comment
Share on other sites

So is your object rigged in ZBrush ? i  remember that you imported your object as .obj ? if that is the case, then even if it had weights in ZBrush, these weights would not be transported to Blender, because .obj format does not support weight groups.

And that means that you are obviously generating the weights while you perform the parentizing to the armature. And this lets me do a wild guess that you use "Create from Bone Heat" when you parentize. (You did not answer my question yet regarding this point :) )

And since the automatic weighting is not at all perfect, you will have to fix some issues after you created the rig. And thats where you can spend a whole lot of time before your object behaves like you want it to behave. Please take your rime and check out some tutorials about weight painting. My number one site for Blender related tutorials is http://cgcookie.com/blender/ .

  • Like 1
Link to comment
Share on other sites

I have been using the same workflow.

zbrush 4 to blender 2.49.

I do not use simplebot though.

There is a file ... avatar.blend. google that and get it.

its a blender file, you can strip the parts of the avatar away until you are left with just the skeleton, and rig to it in the same way mentioned above and save it as 'stripped back to the bones' or something

 

anyway, when i was getting the parsing issue error, it was something i couldnt work out, but  after going round insane for a while i somehow got round it. May have been polycount related, may have been UV unwrapping related i'm not sure but i don't get the error anymore, bearing in mind i try to keep polycounts lower now. I wouldn't go over 14 - 15k faces now for anything i wanted to rig. It's still high that, but for noobs like me who don't know thier way around maya yet zbrush is handy, although intended for super high poly sculpts, working at lowest subdivisions after zshere stage is already high poly for an ingame or inworld character.

 

so here's a workflow which seems to work every time now....

build desired forms/subtools in zbrush, keeping polys as low as possible.

scale each down to a quarter/fifth of its size [visually], so that it comes into blender smaller than the skeleton.

Unwrap UV's at lowest level of detail.

export as obj.

import to blender 2.49b

open the stripped back avatar skeleton file ... [saved as 'avatar skeleton.blend' earlier after stripping the mesh from it].

import obj into blender.

size it move it, etc and then with shift held also select skeleton.

right click mesh to make real.

export as collada.dea 1.4.

import into SL making sure to check 'generate normals' and 'skin wieghts' and also 'include skin wieghts' under upload options in preview window.

 

hope this helps.

 

 

  • Like 1
Link to comment
Share on other sites


Bongo Steampunk wrote:

its a blender file, you can strip the parts of the avatar away until you are left with just the skeleton, and rig to it in the same way mentioned above and save it as 'stripped back to the bones' or something

I have created the "avatar-workbench.blend" a while ago. This blend file is fully based on avatar.blend but adds some nice to haves like a sample mesh made in MakeHuman. Some days ago i also added a modified armature which allows to export SL compatible rigged meshes with Blender 2.60

The avatar-workbench can be downloaded from the Machinimatrix Blog.


import into SL making sure to check 'generate normals' ...


You can "set smooth" in Blender. This is similar to "generate normals" but it has some benefits:

  1. Your character looks much smoother in Blender
  2. Your export files should become smaller.
  3. you can not forget to take care of the normals during import.
  4. If you also creae textures with Blender then set smooth has a lage impact on the generated textures. You want "set smooth" in most cases.

  • Like 1
Link to comment
Share on other sites

What is the python script error ?

It may be something similar to this (take care about the last two rows):

 

FEEDBACK: Illusoft Collada 1.4 Plugin v0.3.162 startedTraceback (most recent call last):File “/home/spike/.blender/scripts/bpymodules/colladaImEx/cstartup.py”, line 681, in ButtonEventonlyMainScene, applyModifiers)File “/home/spike/.blender/scripts/bpymodules/colladaImEx/translator.py”, line 122, in __init__self.__Export(fileName)File “/home/spike/.blender/scripts/bpymodules/colladaImEx/translator.py”, line 131, in __ExportdocumentTranslator.Export(filename)File “/home/spike/.blender/scripts/bpymodules/colladaImEx/translator.py”, line 427, in ExportscenesList = sceneGraph.SaveToDae(bScene)File “/home/spike/.blender/scripts/bpymodules/colladaImEx/translator.py”, line 620, in SaveToDaedaePhysicsModel,daePhysicsModelInstance,bScene)File “/home/spike/.blender/scripts/bpymodules/colladaImEx/translator.py”, line 2152, in SaveSceneToDaedaeGeometry = meshNode.SaveToDae(virtualMesh)File “/home/spike/.blender/scripts/bpymodules/colladaImEx/translator.py”, line 3065, in SaveToDae

If that is your error, then proceed as follows:

 

  • go to object mode
  • remove all materials from your object (by deleting the material indexes)
  • add again those materials you want to have on your object
  • Now Export to Collada works

 

Link to comment
Share on other sites

sweeet I think I figured it out.. I know Im probly doing too much, but what seemed to work for me is to import the obj from Zbrush into Blender, then Export another obj. then load the Bones.blend file then import the obj I just exported from blender. Im still playing around with it, but that does seem to of fixed it, for now, watch me break something and be all doh! I dont know what to do now lol

Thank you everyone for helping!

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 4533 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...