At today's dev meeting, Justin asked me to post to the mailing list to ask
whether anyone can confirm my observation that when you wear a mesh object
and then un-wear it, the full mesh data is being sent from the region server
to the asset server and waits for an update response before it processes any
further actions.


Steps to most easily reproduce:


1. Create a mesh object that is far more detailed than you would normally
create (something in the 40k vert range). Rigged, weighted, UV mapped and
normal-mapped, this will result in a dae that's about 10MB in size which
will then be easy to spot when testing. Obviously a 10MB mesh is far too
large to wear normally but this is the best means to demonstrate the issue.
I can supply a test file if someone wants to try  this but isn't able to
create the dae.


2. Stand in a region where you are able to monitor the outbound and inbound
data traffic between the region server and the asset server (for super-easy
test, be in a home-hosted region with an ISP connection under 5Mbps that is
connected to OSG)


3. Upload the mesh (brew coffee while waiting for it to finish). You'll
notice outbound traffic during the upload as the geometry, etc is being sent
to the asset server. The total traffic will be a little larger than your
original file because LOD and physics also has to be stored. If you're very
patient, upload it with silly LOD settings to have it display at nearly
maximum mesh resolution at all distances and to use the highest possible
quality physics mesh just so the asset is truly enormous (but never do this
for a real asset!)


4. Select an attachment point that you normally have something else attached
to (the skull, for instance, where most people wear prim hair). Detach
whatever is currently there.


5. Attach the mesh to that point. Don't do anything else -- don't texture it
or change it in any way. Just attach.


6. Now from inventory, wear whatever normally mounts to that attachment
point (assuming your viewer is set to replace objects on attachment points
by default) which will cause the mesh to be detached and the other object to
be attached.


7. Monitor the outbound data traffic for the region and also see how long it
takes your other object to appear.


8. Repeat this over and over again, swapping back and forth between the hair
(or whatever) and the mesh while watching the traffic. Depending on your
debug settings, also watch the console for messages.


Once you hit step 8, both objects are being worn from the viewer cache at
this point so there is almost no traffic at all between the viewer and the
region other than very small blips of data. Every time you unwear the mesh,
there's a lengthy delay and the outbound traffic will show that a huge
amount of data is being sent -- at least the entire geometry and possibly
this also includes the UVs, normals, LOD and physics data (I have no idea
since I'm only looking at total MB of data sent, not the actual contents of
the packets) -- and it isn't until that data is fully sent that your other
object (hair) will attach itself and rez. When you detach the hair, it
disappears and is rapidly replaced with the mesh (since it's coming from
your viewer cache) and there is minimal outbound traffic (barely a blip)
between the region server and the asset server.


When unwearing the mesh object if you're in a region with a slower outbound
connection speed you will also see a console warning message complaining
about how long it took to received a response from the asset server to
confirm that the asset had been updated. Example:


17:33:09 - [SynchronousRestObjectRequester]: Slow request 9912 POST took 7098ms, 94ms writing, ?<?xml
version="1.0" encoding="utf-8"?><AssetBase
xmlns:xsd=""; xmlns


Obviously this shouldn't be happening. Mesh attributes such as geometry,
physics, etc can't change after upload so the only data that *should* be
sent is the normal block sent when you unwear a prim or sculptie; and both
Justin and Dahlia were skeptical at the dev meeting when I reported the
issue so it would be helpful to know if anyone else is experiencing this, or
to have someone else independently test and confirm that it's happening.
Obviously nobody should be wearing mesh attachments of this extreme size;
however a full mesh avatar wearing mesh clothing, mesh footwear, mesh
jewelry, etc can begin to approach these sorts of total vertex counts if
they do an outfit change; and even if not, it's still something that
shouldn't be happening regardless of the mesh sizes. It may also be a
contributing factor in the frequent issue where teleports fail for anyone
wearing more than one or two very low poly-count mesh attachments.


Link to Mantis for this issue:

Opensim-dev mailing list

Reply via email to