Re: [osg-users] paged database with height above terrain (HAT)

2007-11-11 Thread Mark Hurry
Hi,

 

Thanks guys for the suggestions so far. 

 

Robert I tried putting my .txp databse through the osgintersection example
and got nothing but the input z value returned as the result, which I assume
means that no result was found

 

Cheers

 

Mark

 

 


No virus found in this outgoing message.
Checked by AVG Free Edition. 
Version: 7.5.503 / Virus Database: 269.15.29/1124 - Release Date: 11-Nov-07
10:12 AM
 
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Tank Traversing across terrain

2007-11-11 Thread weng heng sze tho
Hi Robert,

sorry for the slow reply as I was away.

I'm currently using 2.0
I'll download and install 2.2 in that case.

Thanks!

Regards
Weng Heng


> Date: Wed, 7 Nov 2007 09:08:10 +
> From: "Robert Osfield" <[EMAIL PROTECTED]>
> Subject: Re: [osg-users] Tank Traversing across terrain
> To: "OpenSceneGraph Users" 
> Message-ID:
> <[EMAIL PROTECTED]>
> Content-Type: text/plain; charset=ISO-8859-1
> 
> Hi Weng,
> 
> I believe I enabled intersection testing for GeometryTechnique for
> 2.2, but can't recall the precise details. Which version are you
> using?
> 
> Robert.
> 
> On Nov 7, 2007 3:56 AM, weng heng sze tho <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > I'm trying to make a tank move across a terrain.
> >
> > The terrain is created by reading the image files of Puget Sound that i
> > downloaded from http://www.cc.gatech.edu/projects/large_models/ps.html
> > as mentioned in the quick step-by-step guide for OsgDem. Then I
> > setElevationLayer and setColorLayer to an instance of
> > osgTerrain::TerrainNode. The terrain seems to display fine.
> >
> > I added a "tank" node and attached it to a PositionAttitudeTransform. To
> > make the "tank" move, it is set to a callback whereby it sets the new
> > position of the tank to make it look like it is moving in a circle. The
> > callback needs to check the elevation of the terrain so that the tanks
> > "moves" according to terrain, so to do this I used the function
> > "computeTerrainIntersection" from the example osgparticleeffects. Problem
> > is, computeTerrainIntersection doesn't seem to be able to detect the
> > elevation. I stepped through this function and it seems that
> > osgUtil::IntersectVisitor doesn't seem to get any "hits". I did notice
> > however that if I build the terrain by setting its elevation using
> > osgHeightField as is used in the example osgparticleeffects, the elevation
> > can be detected just fine.
> >
> > How do I make the function "computeTerrainIntersection" return me the
> > correct elevetion?
> >
> > Thanks in advance for your help.
> >
> > Weng Heng
> > ___
> > osg-users mailing list
> > osg-users@lists.openscenegraph.org
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Performance issue with Database Pager & Terra Vista Files

2007-11-11 Thread Akhtar Shamim
Hi Will,

Is it possible for you to link me to the driver which solves the problem?
That will be very helpful to me.

Regards, Shamim

On Nov 12, 2007 9:02 AM, Akhtar Shamim <[EMAIL PROTECTED]> wrote:

> Thanks for your replies. Robert, I am using windows XP Pro with service
> pack 2. The problem happens with GeForce 8800 GTX cards.
>
> Will, is there any solution to this or do I need to change my graphics
> cards?
>
> Regards, Shamim
>
>
> On Nov 12, 2007 5:53 AM, Will Dicharry <[EMAIL PROTECTED]> wrote:
>
> > Hi, I am not sure if this is the same problem, but I have an
> > application that uses large paged databases and have seen a slow down
> > on a higher end machine with a GeForce 7900  The slow down was only on
> > Windows, Linux ran fine.  After tracking it down, I found out that the
> > bottleneck was actually in the graphics drivers.  After installing an
> > older version of the drivers, the performance went back up again.
> > I've also seen the same behavior on a machine with a GeForce 8800 GTX.
> >  Unfortunately, I cannot find an older version of the drivers for that
> > card.  Again, I don't know if this is the same problem, but the
> > performance loss on a higher end machine rang a bell in my head.
> >
> > Will
> >
> > On Nov 10, 2007 12:31 AM, Akhtar Shamim <[EMAIL PROTECTED]> wrote:
> > > Dear All,
> > >
> > > Lately I had been seeing a very obscure problem with our OSG
> > application.
> > >
> > > The application uses a very large Terra Vista paged terrain. I see the
> > > following two phenomena:
> > >
> > > 1. With all our old computers (i.e. computers having a single core
> > CPU, 1 GB
> > > or less RAM and with graphics card < NVidia 6600) the application
> > gives a
> > > constant update rate of 60 Hz. No problem with any refresh rate
> > issues.
> > >
> > > 2. However, when I try the same application on a high end machine
> > (Dual Core
> > > CPU or Quad Core CPU and with graphics card 7800 GT++) the performance
> > is
> > > very poor and quite unpredictable. I looked at the CPU usages and
> > found that
> > > the CPU usage is below 20 % for most of the CPUs. The application
> > crawls at
> > > less than 6-7 Hz. However, if I change the BIOS setting to use only
> > one CPU
> > > the application is back to normal and runs at constant 60 Hz.
> > >
> > > It seems to me that the database pager isnt working perfectly with
> > multiple
> > > CPUs and gets deadlocked. I am very confused with this situation. For
> > our
> > > deployment we have all new machines with dual and quad core CPUs and
> > latest
> > > graphics cards.
> > >
> > > I would be very happy to hear suggestion/advice on how to solve this
> > > performance issue. To be honest I am quite stuck with the problem. I
> > have
> > > tried compiling our application with OSG 1.2 and OSG 2.0. The
> > phenomenon is
> > > the same.
> > >
> > >  Best regards.
> > >
> > > ___
> > > osg-users mailing list
> > > osg-users@lists.openscenegraph.org
> > >
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > >
> > >
> > ___
> > osg-users mailing list
> > osg-users@lists.openscenegraph.org
> >
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
>
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Roll pitch yaw of a vector

2007-11-11 Thread Jean-Sébastien Guay
Hello Panagiotis,

> Sorry if this is a stupid question but I can't find how to solve this!
> Assume that a vector (x1, 0.0, 0.0) is on the x axis. Lets say that
> we have another vector (x2, y2, z2), with the same length. How can I
> find the rotations that I have to apply to the initial vector
> so that we get the second vector?

I know you got the quaternion answer to your question, and that's  
fine, but on a math-related note:


Assuming nv1 = normalize(v1) and nv2 = normalize(v2),

nv1 x nv2 (cross product) gives the normal to the plane formed by v1  
and v2. So that is the axis you must rotate v1 around to get v2.

nv1 . nv2 (dot product) gives the cosine of the angle between v1 and  
v2. So acos(nv1 . nv2) is the angle you must rotate v1 around the axis  
given above to get v2.

For OSG's vector classes, the ^ operator between two vectors gives the  
cross product (returns a vector), and the * operator between two  
vectors gives the dot product (returns a floating-point number, either  
float or double).


Of course, the quaternion method you already got and used is more  
direct, but this is something any graphics programmer should know.

Good luck,

J-S
-- 
__
Jean-Sebastien Guay [EMAIL PROTECTED]
 http://whitestar02.webhop.org/


This message was sent using IMP, the Internet Messaging Program.


___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Performance issue with Database Pager & Terra Vista Files

2007-11-11 Thread Akhtar Shamim
Thanks for your replies. Robert, I am using windows XP Pro with service pack
2. The problem happens with GeForce 8800 GTX cards.

Will, is there any solution to this or do I need to change my graphics
cards?

Regards, Shamim

On Nov 12, 2007 5:53 AM, Will Dicharry <[EMAIL PROTECTED]> wrote:

> Hi, I am not sure if this is the same problem, but I have an
> application that uses large paged databases and have seen a slow down
> on a higher end machine with a GeForce 7900  The slow down was only on
> Windows, Linux ran fine.  After tracking it down, I found out that the
> bottleneck was actually in the graphics drivers.  After installing an
> older version of the drivers, the performance went back up again.
> I've also seen the same behavior on a machine with a GeForce 8800 GTX.
>  Unfortunately, I cannot find an older version of the drivers for that
> card.  Again, I don't know if this is the same problem, but the
> performance loss on a higher end machine rang a bell in my head.
>
> Will
>
> On Nov 10, 2007 12:31 AM, Akhtar Shamim <[EMAIL PROTECTED]> wrote:
> > Dear All,
> >
> > Lately I had been seeing a very obscure problem with our OSG
> application.
> >
> > The application uses a very large Terra Vista paged terrain. I see the
> > following two phenomena:
> >
> > 1. With all our old computers (i.e. computers having a single core CPU,
> 1 GB
> > or less RAM and with graphics card < NVidia 6600) the application gives
> a
> > constant update rate of 60 Hz. No problem with any refresh rate issues.
> >
> > 2. However, when I try the same application on a high end machine (Dual
> Core
> > CPU or Quad Core CPU and with graphics card 7800 GT++) the performance
> is
> > very poor and quite unpredictable. I looked at the CPU usages and found
> that
> > the CPU usage is below 20 % for most of the CPUs. The application crawls
> at
> > less than 6-7 Hz. However, if I change the BIOS setting to use only one
> CPU
> > the application is back to normal and runs at constant 60 Hz.
> >
> > It seems to me that the database pager isnt working perfectly with
> multiple
> > CPUs and gets deadlocked. I am very confused with this situation. For
> our
> > deployment we have all new machines with dual and quad core CPUs and
> latest
> > graphics cards.
> >
> > I would be very happy to hear suggestion/advice on how to solve this
> > performance issue. To be honest I am quite stuck with the problem. I
> have
> > tried compiling our application with OSG 1.2 and OSG 2.0. The phenomenon
> is
> > the same.
> >
> >  Best regards.
> >
> > ___
> > osg-users mailing list
> > osg-users@lists.openscenegraph.org
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Roll pitch yaw of a vector

2007-11-11 Thread Panagiotis Papadakos
Thanks! Works great!

Panagiotis Papadakos

On Sun, 11 Nov 2007, Will Dicharry wrote:

> I believe the osg::Quat makeRotate(v1, v2) method will do it.  This
> method produces the quaternion required to rotate from v1 to v2.
>
> Will
>
> On Nov 11, 2007 1:31 PM, Panagiotis Papadakos <[EMAIL PROTECTED]> wrote:
>> Hi.
>>
>> Sorry if this is a stupid question but I can't find how to solve this!
>> Assume that a vector (x1, 0.0, 0.0) is on the x axis. Lets say that
>> we have another vector (x2, y2, z2), with the same length. How can I
>> find the rotations that I have to apply to the initial vector
>> so that we get the second vector?
>>
>> Thanks!
>>
>> Panagiotis Papadakos
>> ___
>> osg-users mailing list
>> osg-users@lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Performance issue with Database Pager & Terra Vista Files

2007-11-11 Thread Will Dicharry
Hi, I am not sure if this is the same problem, but I have an
application that uses large paged databases and have seen a slow down
on a higher end machine with a GeForce 7900  The slow down was only on
Windows, Linux ran fine.  After tracking it down, I found out that the
bottleneck was actually in the graphics drivers.  After installing an
older version of the drivers, the performance went back up again.
I've also seen the same behavior on a machine with a GeForce 8800 GTX.
 Unfortunately, I cannot find an older version of the drivers for that
card.  Again, I don't know if this is the same problem, but the
performance loss on a higher end machine rang a bell in my head.

Will

On Nov 10, 2007 12:31 AM, Akhtar Shamim <[EMAIL PROTECTED]> wrote:
> Dear All,
>
> Lately I had been seeing a very obscure problem with our OSG application.
>
> The application uses a very large Terra Vista paged terrain. I see the
> following two phenomena:
>
> 1. With all our old computers (i.e. computers having a single core CPU, 1 GB
> or less RAM and with graphics card < NVidia 6600) the application gives a
> constant update rate of 60 Hz. No problem with any refresh rate issues.
>
> 2. However, when I try the same application on a high end machine (Dual Core
> CPU or Quad Core CPU and with graphics card 7800 GT++) the performance is
> very poor and quite unpredictable. I looked at the CPU usages and found that
> the CPU usage is below 20 % for most of the CPUs. The application crawls at
> less than 6-7 Hz. However, if I change the BIOS setting to use only one CPU
> the application is back to normal and runs at constant 60 Hz.
>
> It seems to me that the database pager isnt working perfectly with multiple
> CPUs and gets deadlocked. I am very confused with this situation. For our
> deployment we have all new machines with dual and quad core CPUs and latest
> graphics cards.
>
> I would be very happy to hear suggestion/advice on how to solve this
> performance issue. To be honest I am quite stuck with the problem. I have
> tried compiling our application with OSG 1.2 and OSG 2.0. The phenomenon is
> the same.
>
>  Best regards.
>
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Roll pitch yaw of a vector

2007-11-11 Thread Will Dicharry
I believe the osg::Quat makeRotate(v1, v2) method will do it.  This
method produces the quaternion required to rotate from v1 to v2.

Will

On Nov 11, 2007 1:31 PM, Panagiotis Papadakos <[EMAIL PROTECTED]> wrote:
> Hi.
>
> Sorry if this is a stupid question but I can't find how to solve this!
> Assume that a vector (x1, 0.0, 0.0) is on the x axis. Lets say that
> we have another vector (x2, y2, z2), with the same length. How can I
> find the rotations that I have to apply to the initial vector
> so that we get the second vector?
>
> Thanks!
>
> Panagiotis Papadakos
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] "how got here?"

2007-11-11 Thread Alan Purvis

Hello everyone,

From osg::Program:

Program::Program(const Program& rhs, const osg::CopyOp& copyop):
osg::StateAttribute(rhs, copyop)
{
osg::notify(osg::FATAL) << "how got here?" << std::endl;
}

Is this just a stub because somebody forgot to come back and finish  
it or for some technical reason?


Thanks in advance,
Alan___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Question about Manifests

2007-11-11 Thread Andreas Goebel
Hello,

has anything about the usage of manifest-files for osg changed with 
version 2.2 ?

While everything works fine on my production-system, where visual c++ 
express files are installed, my installer for users doesn´t work 
anymore. I had included a "trick" into that installer to avoid having my 
users to install the visual c++ redistributables (I made them local into 
the program directory).

Thank you,

Andreas
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Roll pitch yaw of a vector

2007-11-11 Thread Panagiotis Papadakos
Hi.

Sorry if this is a stupid question but I can't find how to solve this! 
Assume that a vector (x1, 0.0, 0.0) is on the x axis. Lets say that 
we have another vector (x2, y2, z2), with the same length. How can I
find the rotations that I have to apply to the initial vector
so that we get the second vector?

Thanks!

Panagiotis Papadakos
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] download plugins osg

2007-11-11 Thread Robert Osfield
HI Miriam,

The osgPlugins are part of the core OpenSceneGraph distribution which
you can get either as a binary, the source code in a zip file, for
from the subversion directory.  In the source code distribution just
look in OpenSceneGraph/src/osgPlugins.

Robert.

On Nov 11, 2007 6:24 PM, Miriam D'Elia <[EMAIL PROTECTED]> wrote:
> Hi, I'm Miriam.
> I need last release of all osgPlugins (to  read the images ), because I
> can't find the link for download.
> Thank you
>
> Miriam
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] download plugins osg

2007-11-11 Thread Miriam D'Elia
Hi, I'm Miriam.
I need last release of all osgPlugins (to  read the images ), because I 
can't find the link for download.
Thank you

Miriam
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Efficient dynamic texture updates

2007-11-11 Thread Robert Osfield
Hi Bob,

All you need to do is call dirty on the osg::Image attached to the
Texture and the OSG will automatically do the subloading for you, you
don't need to do anything.  Performance is typically very good.  With
a non power of two texture take care to use a TextureRectangle of use
Non Power of Two Texture support in Texture2D - to do this you'll need
to disable the resize non power of two texture hint in osg::Texture.

Robert.

On Nov 9, 2007 11:11 PM, Robert Balfour <[EMAIL PROTECTED]> wrote:
> For an efficient implementation, what would be the method of choice in
> OSG for dynamically updating multiple texture images (say 300x200) each
> frame:
>
> 1. Update the texture2D images each frame (which I have used in the
> past, but not on multiple textures).
>
> 2. Use a texture subload (which has been suggested to me in the past,
> but I never tried it).
>
> 3. Use a shader (which I see implemented in osgmovie example, but have
> never tried it).
>
> Thanks.
>
> Bob.
> --
> Robert E. Balfour, Ph.D.
> Exec. V.P. & CTO,  BALFOUR Technologies LLC
> 960 South Broadway, Suite 108, Hicksville NY 11801
> Phone: (516)513-0030  Fax: (516)513-0027  email: [EMAIL PROTECTED]
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Performance issue with Database Pager & Terra Vista Files

2007-11-11 Thread Robert Osfield
Hi Aktar,

I have been working with dual core machines and paging for the past
two years without deadlocks, and for the last thee months have been
using a quad core machine without issue.

What OS are you using?

Robert.

On Nov 10, 2007 7:31 AM, Akhtar Shamim <[EMAIL PROTECTED]> wrote:
> Dear All,
>
> Lately I had been seeing a very obscure problem with our OSG application.
>
> The application uses a very large Terra Vista paged terrain. I see the
> following two phenomena:
>
> 1. With all our old computers (i.e. computers having a single core CPU, 1 GB
> or less RAM and with graphics card < NVidia 6600) the application gives a
> constant update rate of 60 Hz. No problem with any refresh rate issues.
>
> 2. However, when I try the same application on a high end machine (Dual Core
> CPU or Quad Core CPU and with graphics card 7800 GT++) the performance is
> very poor and quite unpredictable. I looked at the CPU usages and found that
> the CPU usage is below 20 % for most of the CPUs. The application crawls at
> less than 6-7 Hz. However, if I change the BIOS setting to use only one CPU
> the application is back to normal and runs at constant 60 Hz.
>
> It seems to me that the database pager isnt working perfectly with multiple
> CPUs and gets deadlocked. I am very confused with this situation. For our
> deployment we have all new machines with dual and quad core CPUs and latest
> graphics cards.
>
> I would be very happy to hear suggestion/advice on how to solve this
> performance issue. To be honest I am quite stuck with the problem. I have
> tried compiling our application with OSG 1.2 and OSG 2.0. The phenomenon is
> the same.
>
>  Best regards.
>
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] paged database with height above terrain (HAT)

2007-11-11 Thread Robert Osfield
The osgSim::HeightAboveTerrain class automatically handles paged
databases so use this rather than the lower level intersections
classes in osgUtil.

On Nov 10, 2007 2:54 AM, Mark Hurry <[EMAIL PROTECTED]> wrote:
>
>
>
>
> Hi,
>
>
>
> I'm trying to position 30 - 40 models on a large terrapage (.txp)  terrain
> database, approximately 300miles x 500miles.
>
>
>
> All the models are scattered around the terrain.  The terrain is obviously
> not present all at one go for me to get all the HAT values I need.
>
>
>
> What I have done is move to each model position and wait for the HAT test to
> return a valid result. However my problem is that I think I am probably
> picking up a low level LOD intersection, so that when I eventually go and
> view the positioned model it can sometimes float above, sink below, or sit
> on the terrain.
>
>
>
>
>
> The following is the a snippet of code that I am using
>
> isectVisitor.addLineSegment ( pTerrainIsect );
>
>
>
> pTerrainNode->accept ( isectVisitor );
>
>
>
> osgUtil::IntersectVisitor::HitList hitList = isectVisitor.getHitList(
> pTerrainIsect ) ;
>
>
>
>
>
> Is there someway of making sure that I pick up the highest LOD intersection,
> or someway of finding out if the highest LOD has been loaded before I do my
> intersection test?
>
>
>
> Also when the terrain is loaded from .txp into the scenegraph, is it
> positioned in the graph lowest LOD first, highest last, or is there no
> particular order?
>
>
>
> Any help would be much appreciated.
>
>
>
>
>
> Cheers
>
>
>
> Mark
>
>
>
>
> No virus found in this outgoing message.
>  Checked by AVG Free Edition.
>  Version: 7.5.503 / Virus Database: 269.15.26/1120 - Release Date: 09-Nov-07
> 9:26 AM
>
> ___
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org