Product won't list due to "missing texture"

Discussion and support for the Kitely Market
User avatar
Mike Lorrey
Posts: 218
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 52 times
Been thanked: 123 times

Re: Product won't list due to "missing texture"

Post by Mike Lorrey » Sun Mar 05, 2017 4:35 am

I've made a new prim and the market still claims that I am using a missing texture UUID which is the default blank texture UUID as a particle texture, despite the fact that the particle system is using specifically a completely different UUID, and none of the surfaces of the prim are using that texture. This is not a problem with my build. Please release the bug fix on this issue and lets get this bs dealt with.
User avatar
Ilan Tochner
Posts: 4517
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 2169 times
Been thanked: 2380 times
Contact:

Re: Product won't list due to "missing texture"

Post by Ilan Tochner » Sun Mar 05, 2017 6:31 am

The following was taken directly from the inventory system entry for prim 17 of your item:

Code: Select all

part {
  name: "Primitive"
  uuid: "63f87988-f921-41e6-8bac-08022c5b063b"
  ownerID: "5c4a93a4-f1b8-40b7-a829-1cf10f0e9628"
  lastOwnerID: "5c4a93a4-f1b8-40b7-a829-1cf10f0e9628"
  creatorID: "5c4a93a4-f1b8-40b7-a829-1cf10f0e9628"
  groupID: "b668002f-7335-4262-b770-e46e058173f9"
  baseMask: 647168
  ownerMask: 581632
  groupMask: 0
  everyoneMask: 0
  nextOwnerMask: 573440
  flags: 1088
  particleSystemTexture: "00801380-c330-f027-410c-4603ae2769af"
  shape {
    textureID: "e09bd85a-bf1b-4daa-992e-f6efe9bd8fe2"
    textureID: "db330671-10f7-4c8a-9064-ae1894f2e4b6"
    materialID: "1feb9014-2e84-f5f4-5084-11d6787f1e5d"
  }
  taskInventoryItem {
    name: "Fairy Light"
    assetID: "aa82cad5-057e-495c-9240-d4e6898db584"
    assetType: 10
    invType: 10
    flags: 0
    ownerID: "5c4a93a4-f1b8-40b7-a829-1cf10f0e9628"
    creatorID: "5c4a93a4-f1b8-40b7-a829-1cf10f0e9628"
    groupID: "b668002f-7335-4262-b770-e46e058173f9"
    basePermissions: 2147483647
    currentPermissions: 2147483647
    groupPermissions: 0
    everyonePermissions: 0
    nextPermissions: 532480
    itemID: "27737495-6e02-4f57-a062-779b32edbc19"
    oldItemID: "e4ec2bd6-0aa2-486e-a3d1-1a194e6ca63b"
    ownerChanged: false
  }
}
You'll note that it includes "particleSystemTexture: "00801380-c330-f027-410c-4603ae2769af"".

In other words, Kitely Market is doing exactly what it should have. There is a missing particle system texture asset and it is warning you about it.

The problem you're encountering is therefore not in Kitely Market, it is related to OpenSim, why/how that particle system texture UUID got associated with your object, and why you haven't been able to remove it so far.

The prim in question contains a script called "Fairy Light" which creates a particle system. Are you aware of that script? If so then please rez the item, run the script, rename the item to "TEST FOR ILAN" then retake the item into the Objects folder of your inventory. Once you've done that I can check whether the association with the missing particle system texture UUID has been removed.
User avatar
Mike Lorrey
Posts: 218
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 52 times
Been thanked: 123 times

Re: Product won't list due to "missing texture"

Post by Mike Lorrey » Sun Mar 05, 2017 4:05 pm

And I am telling you that your system is wrong. The script in that prim calls a completely different UUID which I already gave you. Meet me in SLexit and I will prove it to you.
User avatar
Mike Lorrey
Posts: 218
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 52 times
Been thanked: 123 times

Re: Product won't list due to "missing texture"

Post by Mike Lorrey » Sun Mar 05, 2017 4:19 pm

This is the entirety of the Fairy Light script. There is clearly no reference to the UUID that the marketplace says is missing. What I think is going on is, that particle glow (which is different from the particle emissive flag) is causing the system to treat glow as a sort of specular texture that it applies the default blank texture to the particle texture I am calling.

Code: Select all

integer status = TRUE;

// Mask Flags - set to TRUE to enable
integer glow = TRUE;            // Make the particles glow
integer bounce = FALSE;          // Make particles bounce on Z plan of object
integer interpColor = TRUE;     // Go from start to end color
integer interpSize = TRUE;      // Go from start to end size
integer wind = FALSE;           // Particles effected by wind
integer followSource = FALSE;    // Particles follow the source
integer followVel = FALSE;       // Particles turn to velocity direction
string username;
integer poffon =FALSE;
// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_EXPLODE;

// Select a target for particles to go towards
// "" for no target, "owner" will follow object owner 
//    and "self" will target this object
//    or put the key of an object for particles to go to
key target = "";
key USERKEY;

// Particle paramaters
float age = 20;                  // Life of each particle
float maxSpeed = 0.0;            // Max speed each particle is spit out at
float minSpeed = 0.0;            // Min speed each particle is spit out at
string texture = "75d4e7a3-5f8c-434f-b2d5-2473d3e30e29";  // Texture used for particles, default used if blank
float startAlpha = 1.0;           // Start alpha (transparency) value
float endAlpha = 0.1;           // End alpha (transparency) value
vector startColor = <1,1,1>;    // Start color of particles <R,G,B>
vector endColor = <1,1,1>;      // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <.35,.35,.15>;     // Start size of particles 
vector endSize = <.05,.05,.15>;       // End size of particles (if interpSize == TRUE)
vector push = <0,0,0.15>;          // Force pushed on particles
float startGlow= 0.10;
float endGlow=0.0;

// System paramaters
float rate = 5.75;            // How fast (rate) to emit particles
float radius = 1.5;          // Radius to emit particles for BURST pattern
integer count = 1;        // How many particles to emit per BURST 
float outerAngle = PI_BY_TWO;    // Outer angle for all ANGLE patterns
float innerAngle =PI_BY_TWO;    // Inner angle for all ANGLE patterns
vector omega = <0,0,0.5>;    // Rotation of ANGLE patterns around the source
float life = 0;             // Life in seconds for the system to make particles

// Script variables
integer flags;
 

updateParticles()
{
    flags = 0;
    if (target == "owner") target = llGetOwner();
    if (target == "self") target = llGetKey();
    if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
    if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
    if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
    if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
    if (wind) flags = flags | PSYS_PART_WIND_MASK;
    if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
    if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
    if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
     
 //   poffon = TRUE;
    
    llParticleSystem([  PSYS_PART_MAX_AGE,age,
                        PSYS_PART_FLAGS,flags,
                        PSYS_PART_START_COLOR, startColor,
                        PSYS_PART_END_COLOR, endColor,
                        PSYS_PART_START_SCALE,startSize,
                        PSYS_PART_END_SCALE,endSize, 
                        PSYS_SRC_PATTERN, pattern,
                        PSYS_SRC_BURST_RATE,rate,
                        PSYS_SRC_ACCEL, push,
                        PSYS_SRC_BURST_PART_COUNT,count,
                        PSYS_SRC_BURST_RADIUS,radius,
                        PSYS_SRC_BURST_SPEED_MIN,minSpeed,
                        PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
                        PSYS_SRC_TARGET_KEY,target,
                        PSYS_SRC_INNERANGLE,innerAngle, 
                        PSYS_SRC_OUTERANGLE,outerAngle,
                        PSYS_SRC_OMEGA, omega,
                        PSYS_SRC_MAX_AGE, life,
                        PSYS_SRC_TEXTURE, texture,
                        PSYS_PART_START_ALPHA, startAlpha,
                        PSYS_PART_END_ALPHA, endAlpha,
                        PSYS_PART_START_GLOW,startGlow ,
                        PSYS_PART_END_GLOW,endGlow
                            ]);
}



anim_on()
{
          llSetTextureAnim(ANIM_ON|LOOP|SMOOTH|ROTATE,0,1,1,1.0,1.0,0.1);  
}
anim_off()
{
        llSetTextureAnim(ANIM_ON,0,1,1,1.0,1.0,0.0);       
}

light_on()
{
    llSetPrimitiveParams([PRIM_POINT_LIGHT,TRUE,<1,1,0>,1.0,20,0.1]);
    }
light_off()
{
    llSetPrimitiveParams([PRIM_POINT_LIGHT,FALSE,<0,0,0>,0,0,0]);
    }


default
{
    state_entry()
    {
        status = TRUE;
        anim_on();
        light_on();
        updateParticles();
        llSetTextureAnim(ANIM_ON|LOOP|SMOOTH|ROTATE,0,1,1,1.0,1.0,0.1);
    }
    on_rez(integer start_param) 
   {
     llResetScript();
   }    
    touch_start(integer num)
    {
     key id = llDetectedKey(0);
     if (id == llGetOwnerKey(llGetKey()) && status == FALSE)
        {
             anim_on();
             light_on();
             updateParticles();
             status=TRUE;
        }
     else if (id == llGetOwnerKey(llGetKey()) && status == TRUE)
        {
             anim_off();
             light_off();
             llParticleSystem([]);
             status=FALSE;
        }        
    }
}
User avatar
Mike Lorrey
Posts: 218
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 52 times
Been thanked: 123 times

Re: Product won't list due to "missing texture"

Post by Mike Lorrey » Sun Mar 05, 2017 4:21 pm

The debug delivery item I have renamed TEST FOR ILAN and is in my objects folder.
User avatar
Ilan Tochner
Posts: 4517
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 2169 times
Been thanked: 2380 times
Contact:

Re: Product won't list due to "missing texture"

Post by Ilan Tochner » Sun Mar 05, 2017 4:32 pm

Mike, that IS the data that exists in the inventory for that prim. The script may not reference it but something added it to the prim which is why Kitely Market is flagging it as missing.

When we looked at the information for TEST FOR ILAN that UUID we found that the aforementioned missing asset UUID was replaced with a different missing asset UUID. We'll have to look at the OpenSim code to see what it is trying to store for that parameter. It's possible OpenSim is using that parameter to encode some data which isn't actually a reference to an asset.

Please send Oren the new item (via IM) from your inventory, so he'll be able to investigate this inworld and not just by looking at what the inventory data store is showing.
User avatar
Ilan Tochner
Posts: 4517
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 2169 times
Been thanked: 2380 times
Contact:

Re: Product won't list due to "missing texture"

Post by Ilan Tochner » Sun Mar 05, 2017 5:12 pm

It looks like OpenSim is using a temporary texture for particle systems, which makes sense as particle state isn't actually stored in the inventory.

An item that goes in the marketplace should be written so that it creates its particle system on rez (or on touch). However, when it's added to the marketplace, it shouldn't have a particle system as a temporary texture would still exist as part of the prim but it wouldn't actually be saved in the inventory.

Right now, this means you should scrub your particle system (as you've done previously); change the script to create the particle system on rez (or on touch); take the item into your inventory (without accidentally recreating the particle system by touching the item); and then add the item to the marketplace.

Please let me know once you've done so.
User avatar
Mike Lorrey
Posts: 218
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 52 times
Been thanked: 123 times

Re: Product won't list due to "missing texture"

Post by Mike Lorrey » Sun Mar 05, 2017 5:27 pm

Ok I followed what you suggested. I coded the Fairy Light 2.0 script to start the particles on rez, set the texture to the desired particle, turned the Fairy Light 2.0 script off (not running), made a new script to scrub the particle system. Turned the Fairy Light script to running but did not turn the particle system on. Took it into inventory and put it in the box, and put the box on the marketplace. The error has disappeared. This is really convoluted. I don't understand how this sort of error hasn't appeared before with others, or other products I've put on the marketplace, like the snowmaking gun, or even the other particle emitter in this product, uses the exact same particle system but a different texture, but that didn't flag an error.
User avatar
Ilan Tochner
Posts: 4517
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 2169 times
Been thanked: 2380 times
Contact:

Re: Product won't list due to "missing texture"

Post by Ilan Tochner » Sun Mar 05, 2017 6:19 pm

This is convoluted because OpenSim's behavior is sub optimal. It shouldn't have stored a reference to a temporary texture in inventory to begin with.

People rarely encounter this problem, I couldn't tell you why without analyzing the code in OpenSim that handles this behavior. It's possible it doesn't always store a temporary texture but does so only under specific circumstances. In any case, as this is very rarely a problem and has a workaround, we're opting to focus our development resources on things that are higher priority and affect a lot more people.
User avatar
Mike Lorrey
Posts: 218
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 52 times
Been thanked: 123 times

Re: Product won't list due to "missing texture"

Post by Mike Lorrey » Thu Mar 16, 2017 9:41 pm

Ilan Tochner wrote:This is convoluted because OpenSim's behavior is sub optimal. It shouldn't have stored a reference to a temporary texture in inventory to begin with.

People rarely encounter this problem, I couldn't tell you why without analyzing the code in OpenSim that handles this behavior. It's possible it doesn't always store a temporary texture but does so only under specific circumstances. In any case, as this is very rarely a problem and has a workaround, we're opting to focus our development resources on things that are higher priority and affect a lot more people.
In my case, it was strictly because one of the particle systems was running when picked up. If I turned it off before picking up, and have it coded to restart on rez, that solved the issue.
These users thanked the author Mike Lorrey for the post:
Ilan Tochner
Post Reply