I have some naive ideas for P2P 3D streaming, but I have a problem with how to start.
I do not know what tools to use to build 3D models (OpenGL or something else?).
Moreover, how to encode and decode the 3D models to transmit over internet?
P2P 3D streaming is probably more of a network than a graphics problem, though there are elements of both. 3D streaming itself is old (> 15 years), but using P2P network for it is relatively new (since 2006). To investigate a network problem, you need not know how to build models or do OpenGL programming, unless that's your main interests.
If you're interested in the graphics aspect, you may wish to consult the NUS work. It might also help to ask a few tips from them on where to start. Making existing 3D models / content streamable would be quite valuable, for this you might need knowledge about how current 3D models are stored and represented (e.g., the COLLADA and X3D formats).
On the other hand, if you're interested in the networking aspect, then probably you'll need to first make yourself familiar with all existing work, and possibly those of a closely related field (P2P video streaming). There's tons of research on P2P video streaming, and they do not necessarily need knowledge of how to encode/decode video (for the network researchers).
So first, perhaps you can first identify yourself which area (graphics or networking) you'd like to immerse yourself into. Then start with getting familiar with the basic techniques and/or literature.